Android中不用Service跨Avtivity仍然可以播放音乐的一个简单方法

首先创建一个专门用来播放音乐文件(在这里只播放已经导入到res/raw/下的音频文件)的类
MusicPlayer
public class MusicPlayer implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener {;
	private MediaPlayer bgPlayer;
	
	public MusicPlayer(Context context) {
		this.context = context;
	}
        //当音乐播放完毕时
	public void onCompletion(MediaPlayer mp) {
		stopBgSound();
	}
        //当音乐播放发生错误时
	public boolean onError(MediaPlayer mp, int what, int extra) {
		stopBgSound();
		return false;
	}
	//播放背景音乐,传入的paramInt为res/raw/目录下的音频文件的引用
	public void playBgSound(int paramInt) {
		stopBgSound();
		
		try {
                        //利用音频文件创建一个MeidaPlayer
			MediaPlayer mediaPlayer = MediaPlayer.create(context, paramInt);
			bgPlayer = mediaPlayer;
			bgPlayer.setOnCompletionListener(this);
                        //设置是否循环播放
			bgPlayer.setLooping(true);
                        //开始播放
			bgPlayer.start();
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} 
	}
	//停止播放背景音乐
	public void stopBgSound() {
		if(bgPlayer == null) 
			return;
		if(bgPlayer.isPlaying())
			bgPlayer.stop();
		bgPlayer.release();
		bgPlayer = null;
	}
}



然后,新建一个Activity,我命名为MyActivity

MyActivity.java
public class MyActivity extends Activity {
	public static MusicPlayer musicPlayer;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		if(musicPlayer == null) {
			SysSetting.getInstance(getApplicationContext()).load();
			musicPlayer = new MusicPlayer(getApplicationContext());
			musicPlayer.playBgSound(R.raw.welcome);
		}
	}
}


在这里已经完成了大部分的工作,最后一步就是,让你所需要跨Activity播放背景音乐而不使用Service的Activity都继承与这个Activity就可以了。

你可能感兴趣的:(android,工作,音乐)