在老师给的代码基础上做了一些改动
实验要求
音乐播放器添加音乐播放的 上一首 和 下一首 控制将广播嵌入了服务实现一些进阶功能:显示专辑封面、歌曲名称、歌手姓名和进度条最终页面展示
实验步骤
布局文件2.创建一个assets文件夹,放置音频
JAVA文件里的主要方法
// 自定义的BroadcastReceiver,负责监听从Service传回来的广播public class ActivityReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// 获取Intent中的update消息,update代表播放状态int update = intent.getIntExtra("update", -1);// 获取Intent中的current消息,current代表当前正在播放的歌曲int current = intent.getIntExtra("current", -1);if (current >= 0) {title.setText(titleStrs[current]);author.setText(authorStrs[current]);cover.setImageResource(covers[current]);}switch (update) {case 0x11:play.setImageResource(R.drawable.pause);status = 0x11;break;// 控制系统进入播放状态case 0x12:// 播放状态下设置使用暂停图标play.setImageResource(R.drawable.play);// 设置当前状态status = 0x12;break;// 控制系统进入暂停状态case 0x13:// 暂停状态下设置使用播放图标play.setImageResource(R.drawable.pause);// 设置当前状态status = 0x13;break;case 0x14://设置使用停止图标play.setImageResource(R.drawable.pause);// 设置当前状态status = 0x14;break;}}}
// 为MediaPlayer播放完成事件绑定监听器mPlayer.setOnCompletionListener(new OnCompletionListener(){@Overridepublic void onCompletion(MediaPlayer mp) {current++;MainActivity.audioSeekBar.setMax(0);if (current >= 5) {current = 0;}//发送广播通知Activity更改文本框Intent sendIntent = new Intent(MainActivity.UPDATE_ACTION);sendIntent.putExtra("current", current);// 发送广播,将被Activity组件中的BroadcastReceiver接收到sendBroadcast(sendIntent);// 准备并播放音乐prepareAndPlay(musics[current]);}});
public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(final Context context, Intent intent) {int control = intent.getIntExtra("control", -1);switch (control) {// 播放或暂停case 1:// 原来处于没有播放状态if (status == 0x11) {// 准备并播放音乐prepareAndPlay(musics[current]);status = 0x12;}// 原来处于播放状态else if (status == 0x12) {// 暂停mPlayer.pause();// 改变为暂停状态status = 0x13;}// 原来处于暂停状态else if (status == 0x13 || status == 0x14) {// 播放mPlayer.start();// 改变状态status = 0x12;}break;// 停止声音case 2:// 停止播放mPlayer.stop();status = 0x14;break;case 3:current++;if(current < 0)current = 0;prepareAndPlay(musics[current]);break;case 4:current++;if(current > musics.length-1)current = 0;prepareAndPlay(musics[current]);break;}// 广播通知Activity更改图标、文本框Intent sendIntent = new Intent(MainActivity.UPDATE_ACTION);sendIntent.putExtra("update", status);sendIntent.putExtra("current", current);// 发送广播,将被Activity组件中的BroadcastReceiver接收到sendBroadcast(sendIntent);}}
代码链接:添加链接描述