使用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();