使用android系统提供的MediaStore.Audio.Media.EXTERNAL_CONTENT_URI获取本地所有音频文件,将获取到的音频文件封装到MusicInfoController类中,将该类交给继承自Application的MusicPlayerApp类来管理,这样就可以实现通过MusicInfoController类来共享程序中的数据。
2)定义常量:
由于程序中多处用到BroadCastReceiver和Intent中key的传递,所以有必要将key定义在Contants类中,并且将不同的key封装到内部类中,便于管理
Contants(MusicPlayerMsg、MusicInfoBySharedPreference、ReceiverByBroadcast、MsgByBroadcast);
3)保存程序退出数据:
将程序的退出信息写到SharedPreference中,方便程序下次运行的时候,找到可用的资源。
setMusicInfoToSP(String musicName, String musicPath);
getMusicInfoBySP();
4)播放暂停控制:
设置标志位
5)上一曲/下一曲:
当前的歌曲id加1/减一后,将该值发给musicInfoControl,从musicInfoControl中获取歌曲的上一首/下一首信息
6)播放进度的字符显示:
在Service中创建进程,该进程每隔1秒将当前的播放状态(mplayer.getCurrentPosition())发送给主界面,主界面对接收到的数据进行格式化
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("mm:ss");
musicEndTime.setText(mSimpleDateFormat.format(durationTime));
7)进度条的实时更新:
设置当前值:musicProgressBar.setProgress(currentTime);
设置最大值:musicProgressBar.setMax(durationTime);
8)实时更新播放界面的歌曲标题:
在播放列表界面的时候,通过广播将listview中被选择的歌曲信息发给播放主界面。
9)监听播放结束信息
setOnCompletionListener
10)点击Menu按键就无法弹出菜单
覆写activity的onKeyUp方法,并调用监听KeyEvent.KEYCODE_MENU,super.openOptionsMenu();