學習完“計算器” “視頻播放器” “藍牙聊天”以后,對安卓利用的開發我們基本上就入門70%了。
現在,我們將在之前學習的基礎上,進1步完善我們要掌握的安卓開發技術,開發1個“音樂播放器”。
當完成這個“音樂播放器”利用后,我們對安卓的利用開發就完全的入門,能和大部份安卓開發者侃侃而談了,固然更重要的是能夠開發更多功能全面、復雜的利用程序了。
本文針對的讀者是:
在開始之前,假定各位已做好了以下準備:
本文的代碼,可以從安豆網的示例代碼中下載。
音樂是我們平常必備的精神食糧,每一個人的手機里面1定會有1個音樂播放器。在座公交時,它會陪伴著我們;在運動的時候,它會陪伴著我們;睡覺前,它一樣會陪伴著我們。
與之前計劃產品的思路1樣,我們先要做加法,盡量的把音樂播放器可以具有的功能發掘出來;然后再做減法,把不實用、或投入性價比不高的功能放1放;最后,再根據用戶的反饋、加上上1版產品留下的遺憾,進行產品的升級。
讓我們把有限的精力集中到最為重要的功能上面去。
音樂播放器我們已見過很多了,它們的功能愈來愈高級,最早只能播放本地裝備上存儲的音樂,現在進化的還能夠播放網絡端端音樂了。
我們就先來為自己的音樂播放器來做個頭腦風暴吧,看看它可以具有哪些功能:
可以添加的功能實在是太多了,這個清單實在是不能包括其萬1。
從上面列出的明細可以看出,能夠賦予這個聊天利用的功能實在是太多了,因此我們必須根據我們的能力和精力來進行挑選,做功能的減法。
大體上看,上面的功能清單將功能分成了兩塊,
加入網絡方面的功能是1個很好的想法,不過就目前來講,我們啥也沒有,還是先把更加基礎簡單的功能實現了吧。因此,我們決定先做好本地播放器的功能,其它的以后再說。
在實現本地音樂播放器的進程中,我們也選擇避繁就簡的原則,對那些不是原則上重要的功能能省就省,做到盡可能簡單。
根據上面設計的原則,我們來肯定音樂播放器的具體功能:
這里我們再增加1個福利,為音樂播放器增加1個桌面小工具。當它放到桌面上以后,用戶能很方便的控制音樂的播放。
在桌面小工具上,可以顯示音樂的封面,歌曲的名字,和控制它的播放、暫停、上1首、下1首。
因此,對視頻播放器的界面進行了以下的設計:
全部音樂播放的流程應當是,
MusicListActivity
通太長按,開始選擇多首音樂,組成1個播放列表;MusicService
,MusicService
操作PlayListContentProvider
清空原本的播放列表,然后將這份新的列表存儲到PlayListContentProvider
當中;MusicListActivity
上的播放按鈕時,MusicService
開始從播放列表獲得第1首曲子開始播放;MusicService
將當前播放的進度實時更新到PlayListContentProvider
中;MusicService
都將通知給MusicListActivity
,讓其能夠同步的改變界面顯示;MusicListActivity
能通過調用MusicService
提供的接口控制音樂的暫停、繼續、播放上1首、下1首;關于播放的規則是我們自己定義的,如果你有自己的想法,可以在完成音樂播放器的開發后,依照自己的想法修改,做到融會貫通。
我們肯定了音樂播放器應當具有的功能,還需要給出實現這些功能的1些基本假定。
裝備上可被播放的音頻文件很多很多,多是通話錄音,多是語音記事本,為了簡便操作,我們將認為音樂文件都放在包括了music
關鍵字的路徑當中;
裝備上已準備好自帶封面的音樂。比如說1首MP3格式的音樂,它所包括的內容其實不只是音樂本省,還包括了很多元信息,例如歌曲的作者,歌曲的所屬專輯,乃至歌曲的專輯封面圖片等很多豐富的信息。只不過我們通常只注意到了MP3格式的音樂本身的音樂內容和文件名字,沒有直觀的看到其它這些信息。元信息是可選的內容,所以有的音樂文件也沒有把對應的信息填充到里面去。不過正版版權到音樂供應商都會注意到這些細節,把與這首音樂更多的信息都提供給大家。
我們這里使用的測試音樂都是通過網易云音樂
下載的正版歌曲(你也能夠去別的渠道下載正版歌曲,作為調試程序時使用的素材),所以基本上會看到歌曲的封面圖片。如果沒有封面圖片,我們會讓利用顯示默許的封面圖片。
對那些沒有在這個階段加入的功能,期待以后加入吧。
對那些為了簡化開發難度、減少開發時間而采取的簡單設計,期待在下1版程序中優化和完善吧。
/*******************************************************************/
* 版權聲明
* 本教程只在CSDN和安豆網發布,其他網站出現本教程均屬侵權。
*另外,我們還推出了Arduino智能硬件相干的教程,您可以在我們的網店安豆的雜貨鋪中購買相干硬件。同時也感謝大家對我們這些碼農的支持。
*最后再次感謝各位讀者對安豆
的支持,謝謝:)
/*******************************************************************/