文/張琦
基于Android的音樂播放器設(shè)計與實現(xiàn)
文/張琦
本研究課題屬于移動互聯(lián)網(wǎng)平臺軟件開發(fā)領(lǐng)域,開發(fā)基于Android平臺的手機(jī)音樂播放器應(yīng)用軟件。該應(yīng)用軟件頁面友好,功能完善,支持MP3、WMA等多種格式的音頻文件,主要實現(xiàn)文件掃描、暫停、歌詞同步、上一首、下一首、音量調(diào)節(jié)、后臺播放等功能,經(jīng)過多輪測試,能夠在安卓手機(jī)上穩(wěn)定運行。
Android 音樂播放器 軟件開發(fā)
作為一款運行在手機(jī)上的音樂播放器,必須具備良好的用戶界面,且界面須簡單明朗易于操作。因此音樂播放器的需求可以從音樂播放器的界面來劃分。一般來講,音樂播放器的需求主要分為主界面需求、播放界面需求。
本地列表按鈕:可打開本地播放列表。應(yīng)用程序從主界面切換到本地播放列表界面,可對列表中的音樂進(jìn)行操作。
退出按鈕:可退出音樂播放器。
上一曲/暫停/播放/下一曲按鈕:用戶點擊上一曲或下一曲按鈕,音樂播放器切換到上一曲或下一曲,并播放新的歌曲,用戶點擊播放或暫停按鈕,音樂播放器播放或暫停。
歌詞顯示:播放音樂的同時可同步顯示歌詞。
一款優(yōu)秀的手機(jī)軟件需要做到良好的用戶體驗,主要體現(xiàn)在以下兩點:
主界面和播放界面要做到界面設(shè)計友好,操作簡單,設(shè)計合理,UI設(shè)計要能讓軟件變得有個性有品味,還要讓軟件的操作變得舒適、簡單、自由,充分體現(xiàn)軟件的定位和特點。
能夠迅速且準(zhǔn)確的處理用戶的各種請求,各項功能切換要做到不延遲、不卡頓,處理業(yè)務(wù)邏輯較為復(fù)雜或響應(yīng)時間較長的功能時,需要給出提示,讓用戶知道程序還在運行。
通過對音樂播放器各項功能的需求分析,主要包含以下功能:
首次運行軟件時,軟件將自動訪問擴(kuò)展卡中的音樂文件和LRC文件,然后將音樂文件的信息填充到播放列表中。當(dāng)用戶點擊音樂時,音樂會自動播放,同時顯示LRC歌詞,用戶也可以進(jìn)行各種操作,比如上一曲、刪除音樂等。
播放音樂時,可以同步顯示歌詞,拖拽進(jìn)度條,歌詞可做到實時跟隨。
實現(xiàn)歌曲列表的選擇,可以選擇音樂列表,以及掃描內(nèi)存、退出等功能。
根據(jù)需求分析,音樂播放器的功能由播放列表模塊、歌詞顯示模塊、功能菜單模塊組成。
首次運行軟件時,進(jìn)入音樂播放列表界面,該界面使用了ListView列表控件、SeekBar音軌控件、ToggleButton按鈕控件、TextView文本顯示控件。
(1)本地列表的實現(xiàn)。此功能需要調(diào)用setCurrentList(int which)方法,當(dāng)用戶點擊音樂列表上的音樂文件時,音樂自動播放。點擊時需要調(diào)用OnclickListener方法,并在Oncreate()中注冊此方法。
(2)上一曲/暫停/播放/下一曲功能。新建PlayerActivity類,在該類中對選中的MP3文件進(jìn)行播放、暫停和停止操 作。 在LocalMP3ListActivity類 中 覆 寫onListItemClick()方法,利用intent對象來傳遞得到的MP3文件(即MP3Info對象)到PlayerActivity類中。
在GeCiView中通過intent傳遞選中的按鈕,啟動PlayerService,實現(xiàn)在Service中執(zhí)行播放、暫停和停止。然后編寫對LRC文件進(jìn)行處理的類LrcProcesser,將時間和歌詞分別讀取到一條單獨的隊列(Queue)中,再將兩條隊列放入List中。在DownloadServive的run()函數(shù)中實現(xiàn)對LRC文件的下載,同 時 在 WriteSdcard里 對 MP3Info中 的 getLocalMP3Info()方法中對lrcName和lrcSize進(jìn)行相應(yīng)設(shè)置。最后在PlayerActivity中,通過Handler控制run函數(shù)反復(fù)執(zhí)行不斷比較已經(jīng)播放的時間與通過LrcProcesser處理后的時間隊列中的時間,在合適的時間取出時間隊列和歌詞隊列中對應(yīng)的隊列元素,將歌詞隊列顯示在lrcText中,從而實現(xiàn)歌詞的顯示。
(1) 掃 描 功 能。 新 建 GetMusic類, 首 先 定 義array并 將 其 實 例 化,接 著 調(diào) 用 ArrayList
(2)退出功能。用戶點擊退出按鍵后可以退出音樂播放器。該模塊在Activity中重寫onKeyDown方法,可以監(jiān)聽到退出鍵,也可直接調(diào)用OnBackpress方法實現(xiàn)對退出鍵的監(jiān)聽。
本文操使用的是Android基于Windows的操作系統(tǒng);支持Android2.2以上版本;開發(fā)環(huán)境是Eclipse 4.3.2和ADT 22.3。該播放器由由播放列表模塊、歌詞顯示模塊、功能菜單模塊組成,能實現(xiàn)基本的上一曲/暫停/播放/下一曲功能,以及掃描、歌詞顯示功能,系統(tǒng)界面設(shè)計友好,操作簡單,設(shè)計合理,符合音樂播放器的基本需求。
[1]畢廣吉.Java程序設(shè)計實例教程[M].北京:冶金工業(yè)出版社,2010:34-45.
[2]陳璟,陳平華,李文亮.Android內(nèi)核分析[J].廣東:廣東工業(yè)大學(xué)計算機(jī)學(xué)院,2012:112-115.
[3]高昂.支持動態(tài)語言的Android平臺[M].北京:人民郵電出版社,2011:12-23.
作者單位 武漢華夏理工學(xué)院 湖北省武漢市 430223
張琦(1989-),男,碩士學(xué)位。研究方向為軟件工程、數(shù)據(jù)庫技術(shù)。