简单Service后台音乐播放

public class MainActivity extends Activity {

	private MyConnection conn;
	private MyPlayMusicService playMusicService;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		conn = new MyConnection();
	}

	// 点击button播放音乐
	public void startMusic(View view) {
		if (playMusicService == null) {
			Intent intent = new Intent(MainActivity.this, MyPlayMusicService.class);
			// 以绑定的形式开启服务
			bindService(intent, conn, Context.BIND_AUTO_CREATE);
		} else {
			// 播放音乐
			playMusicService.startMusic();
		}
	}

	// 点击button暂停播放
	public void pauseMusic(View view) {
		if (playMusicService != null) {
			playMusicService.pauseMusic();
		}
	}

	// 点击button停止播放音乐
	public void stopMusic(View view) {
		if(playMusicService != null){
			playMusicService.stopMusic();
			unbindService(conn);
		}
	}

	public class MyConnection implements ServiceConnection {

		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			MyBinder myBinder = (MyBinder) service;
			playMusicService = myBinder.getService();
		}

		@Override
		public void onServiceDisconnected(ComponentName name) {

		}

	}
}

public class MyPlayMusicService extends Service {

	//操作音频的媒体对象
	private MediaPlayer mediaPlayer;
	private int position = 0;//当前播放的位置
	
	@Override
	public void onCreate() {
		super.onCreate();
		//初始化Mediaplayer
		if(mediaPlayer == null){
			//根据特定的资源创建MediaPlayer对象
			mediaPlayer = MediaPlayer.create(MyPlayMusicService.this, R.raw.heavencity);
		}
	}
	
	@Override
	public IBinder onBind(Intent intent) {
		//绑定之后直接播放
		startMusic();
		return new MyBinder();
	}
	
	//开始播放音频
	public void startMusic(){
		if(mediaPlayer != null && !mediaPlayer.isPlaying()){
			try {
				if(position == 0){
					mediaPlayer.stop();
					//在播放之前调用
					mediaPlayer.prepare();
					mediaPlayer.start();
				}else{
					//根据指定的位置播放
					mediaPlayer.seekTo(position);
					mediaPlayer.start();
				}
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	//暂停播放
	public void pauseMusic(){
		if(mediaPlayer != null && mediaPlayer.isPlaying()){
			//暂停播放
			mediaPlayer.pause();
			//记录当前播放的位置
			position = mediaPlayer.getCurrentPosition();
		}
	}
	
	//停止播放
	public void stopMusic(){
		if(mediaPlayer != null){
			//停止播放
			mediaPlayer.stop();
			//释放资源
			mediaPlayer.release();
		}
	}
	
	public class MyBinder extends Binder{
		
		public MyPlayMusicService getService(){
			return MyPlayMusicService.this;
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值