一般的Android应用程序的音乐可以分为背景音乐和点击各种控件时的音效,前者一般为比较大的音乐文件,后者一般为比较小的音乐。在Android中一般用MediaPlayer类处理比较大的音频文件,用SoundPool类处理比较短促的音频文件。
因此,现设计一音乐播放工具类如下:
MusicPlayer
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import com.ruanko.shengji4Android.R;
import com.ruanko.shengji4Android.model.SysSetting;
public class MusicPlayer implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener {
private Context context;
private MediaPlayer bgPlayer; //播放背景音乐的播放器
private SoundPool actionMusicPlayer; //播放音效的播放器
private int source_da,source_givecard,source_start,source_win,source_calllord; //各种音效的source
public MusicPlayer(Context context) { //初始化
this.context = context;
this.actionMusicPlayer = new SoundPool(10, AudioManager.STREAM_SYSTEM,5); //这里指定声音池的最大音频流数目为10,声音品质为5大家可以自己测试感受下效果
this.source_da = actionMusicPlayer.load(context, R.raw.da, 0);
this.source_givecard = actionMusicPlayer.load(context, R.raw.givecard, 0);
this.source_start = actionMusicPlayer.load(context, R.raw.start, 0);
this.source_win = actionMusicPlayer.load(context, R.raw.win, 0);
this.source_calllord = actionMusicPlayer.load(context, R.raw.calllord, 0);
}
public void onCompletion(MediaPlayer mp) { //音频文件播放完成时自动调用
}
public boolean onError(MediaPlayer mp, int what, int extra) { //音频文件播放发生错误时自动调用
return false;
}
public void playBgSound(int paramInt) { //播放背景音乐,paramInt为音频文件ID
if(!SysSetting.getInstance(context).isBgSound()) { //SysSetting为一个单例类,是我自己定义的,用于保存本应用程序相关设置,isBgSound()为得到是否开启背景音乐设置
return;
}
stopSound(bgPlayer);
try {
MediaPlayer mediaPlayer = MediaPlayer.create(context, paramInt);
bgPlayer = mediaPlayer;
bgPlayer.setOnCompletionListener(this);
bgPlayer.setLooping(true); //设置是否循环,一般背景音乐都设为true
bgPlayer.start();
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
public MediaPlayer getBackGroundPlayer() {
return this.bgPlayer;
}
public void stopBgSound() { //停止背景音乐的播放
if(bgPlayer == null)
return;
if(bgPlayer.isPlaying())
bgPlayer.stop();
bgPlayer.release();
bgPlayer = null;
}
private void playSound(int source) { //如果系统设置中开启了音效,则播放相关的音频文件
if(SysSetting.getInstance(context).isEffectSound()) {
actionMusicPlayer.play(source, 1, 1, 0, 0, 1);
}
}
public void playHitCardSound() {
playSound(source_da);
}
public void playGiveCardSound() {
playSound(source_givecard);
}
public void playStartSound() {
playSound(source_start);
}
public void playWinSound() {
playSound(source_win);
}
public void playCalllordSound() {
playSound(source_calllord);
}
}
在activity中怎样使用这个工具类呢?播放背景音乐可能我们一般都想到的是service,但是service对背景音乐的控制比较难,尤其是,在不同场景,需要不时变换背景音乐的情况下,因此,可以考虑自己定义一个activity,继承Activity,在其中定义一个静态的成员变量
public static MusicPlayer musicPlayer;
并在这个Activity的onCreate方法中初始化该musicPlayer
if(musicPlayer == null) {
SysSetting.getInstance(getApplicationContext()).load(); //加载系统设置,SysSetting为我自己定义的一个类,由于代码较长,就不给出了
musicPlayer = new MusicPlayer(getApplicationContext());
musicPlayer.playBgSound(R.raw.welcome); //播放背景音乐
}
然后,再将所有的Activity继承于这个自己定义的Activity即可。
最后
以上就是喜悦自行车最近收集整理的关于Android下的一个音乐播放工具类的全部内容,更多相关Android下内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复