大概做了一周左右,一個簡易版本的音樂播放器。主要有三個界面,先上圖:
一個主界面:主要負責1加載外部存儲的音樂文件信息到應用內置數據庫中2轉到音樂文件列表界面
一個音樂文件列表界面:主要1負責展示音樂文件列表2轉到歌詞界面中3控制音樂播放,如上一首、下一首、暫停、播放模式、進度控制等
一個歌詞展示界面:主要負責1展示歌詞2控制音樂播放
類層次結構:
主要是3個Activity、1個適配器類、1個SQLite數據庫幫助類、1個內容提供者、1個Service、其他一些幫助類等
界面部分主要是反編譯一款音樂播放器:
選擇反編譯這款,是因為它的安裝文件比較小(相應的資源文件會比較少吧,我猜,當時下了幾款反編譯出來,如大名鼎鼎的千千靜聽、蝦米、天天動聽還有樂視 等),其他幾款反編后資源文件太多,沒時間整理。當然,反編得到的布局文件還是得自己修改一下的,畢竟布局中的一些組件是APP內定義的,不是 Android內置的。
代碼部分主要看了兩個其他音樂播放器的實現代碼
http://blog.csdn.net/wwj_748/article/category/1414168 --簡、美音樂播放器,不過代碼部分感覺有些繁雜,有些是沒用的代碼
http://pan.baidu.com/s/16aaV8 --《Android多媒體應用開發實戰詳解:圖像、音頻、視頻、2D和3D》這本書的第17章,看這本書的代碼純屬偶然,只是在書架隨意瀏覽一下看到剛好有做音樂播放器的,然后回來后直接到網上下載書籍附帶源碼來看
這個播放器還有很多不足
1:中文亂碼
2:不少Bug,如跳轉頁面,暫停圖標和播放圖標不對應(最近一次裝到其他模擬器中測試,發現第一次點擊音樂列表中的文件時會拋異常,現在暫時沒時間看了)
3:展示列表listview的優化問題,在網上稍微瀏覽了一下如何優化,但沒去實踐
4:service和activity都在同一個線程中,反應有點慢(較嚴重的問題,雖然一些耗時的操作,比如和數據庫相關的部分,我放到了另外一個線程中,但還是不足,還有很大一部分可以移出主線程)
5:代碼寫得不好。有不少代碼重復了,比如展示歌詞的界面中控制音樂播放的部分,就直接拷貝音樂文件展示界面的。盡管看過一些設計模式的書,但這個應用中 沒用上(不過,期間也算重構了兩次吧,為了把邏輯理得更清晰,第二次重構中決定操作界面按鈕只向后台service發送廣播,而界面組件的變化全部由后台 發出廣播啟動,這樣一個service即可控制多個activity的變化)
因為時間關系,上面這些不足目前就先不解決了。等以后有時間有精力了再來完善。像《黑客與畫家》這本書中寫的,快速出原型,不要管bug
其他:
github上面有個開源的音樂播放器(jamendo),有時間有精力的話,可以了解一下,網址是:
https://github.com/telecapoland/jamendo-android
另外還有個基於JAVA的跨平台播放器:YOYOPlayer
http://code.google.com/p/yoyoplayer/
另外還有SimpleMusicPlayer的源碼和簽名了的APK:
http://files.cnblogs.com/creasylai19/SimpleMusicPlayer.zip 這個是源碼資源
http://files.cnblogs.com/creasylai19/SimpleMusicPlayer.apk 這個是簽名了的APK
后續等有時間了再來講一下思路和完善這個播放器