一、本項目完成的功能
1.實現(xiàn)音樂播放器的基本功能:播放音樂,暫停音樂施无,停止音樂,切換到上一首或者下一首音樂
2.實現(xiàn)一些進階功能:顯示專輯封面禽绪、歌曲名稱、歌手姓名和進度條
3.調(diào)整不同控件的位置洪规、大小印屁,使得整個軟件界面看起來大方美觀
二、項目的具體步驟
1.基本代碼:在MainActivity中淹冰,首先初始化一些必要的值库车,比如音樂播放狀態(tài)和歌曲名稱列表。然后在onCReceiverate函數(shù)中樱拴,獲取頁面中各種控件柠衍,添加監(jiān)聽器。最后在onClick函數(shù)中晶乔,對于不同按鈕的點擊實現(xiàn)不同操作珍坊。
在MainActivity中,也是先初始化一些必要的值正罢。然后在prepareAndPlay函數(shù)中實現(xiàn)播放音樂的代碼阵漏。
這些基本代碼在以前的課中都學習過,沒有難度。
2.這里的難點在于在這兩個類Activity和Service中分別實現(xiàn)兩個廣播履怯。我們需要明確的是MainActivity只負責與頁面有關的功能回还,比如頁面顯示,監(jiān)測頁面點擊等叹洲。MusicService只負責與音樂播放有關的功能柠硕,比如音樂的暫停和切換等。這兩部分功能在兩個函數(shù)中运提,但是它們又需要互通消息蝗柔,因此這里我們采用廣播機制實現(xiàn)消息的發(fā)送和接受。
第一個需求是MusicService在切換歌曲的時候民泵,需要向MainActivity發(fā)送消息癣丧,告訴MainActivity需要修改頁面的文本框信息了。具體步驟是在MusicService中的onCreate函數(shù)中栈妆,編寫歌曲播放代碼胁编,并實現(xiàn)一首音樂播放完畢就向MainActivity發(fā)送一個intent。MainActivity需要接收廣播鳞尔,那么就在MainActivity中定義一個ActivityReceiver子類掏呼,用來獲取MusicService正在播放的歌曲信息。具體步驟還有定義過濾器铅檩,注冊Receiver,啟動intent服務莽鸿。
第二個需求是MainActivity監(jiān)測到的用戶對頁面按鈕的點擊請求昧旨,自己不能實現(xiàn),需要發(fā)送給MusicService讓其實現(xiàn)祥得。第二個廣播在Activity中的onClick函數(shù)中定義intent兔沃,對接受到的不同的按鈕控制信息向MusicService發(fā)送控制信息。然后在MusicService中定義Receiver级及。
這里需要注意的是乒疏,要接收廣播,在Activity中用ActivityReceiver類饮焦,在Service用BroadcastReceiver類怕吴。
三、效果展示
四县踢、代碼實現(xiàn)
代碼倉庫地址:https://gitee.com/lookevin/music-player