張春紅
【摘要】本文采用MVC框架,視圖層用listview、gridview、ActionBar+ViewPager等組件在四大布局中根據(jù)需求布局,xml做相應(yīng)優(yōu)化,設(shè)計(jì)開發(fā)出一款音樂播放器。
【關(guān)鍵詞】Android;移動(dòng)互聯(lián)網(wǎng);智能手機(jī);軟件設(shè)計(jì)
一、播放器設(shè)計(jì)目標(biāo)
本系統(tǒng)屬于用戶平常所用的音樂播放器??梢员憷脩粼谄匠5纳钪袑?duì)音樂文件的操縱。其設(shè)計(jì)要滿足以下方面。
(1)界面雅觀友愛;(2)沒有門檻要求,操縱起來都很簡(jiǎn)單;(3)能夠?qū)σ魳肺募M(jìn)行有效方便的管理;(4)讓用戶充分感受到軟件的個(gè)性化方面;(5)軟件應(yīng)能做到最大限度地實(shí)現(xiàn)易保護(hù)性和易操縱性。
二、播放器的功能需求分析
根據(jù)項(xiàng)目所確立的目的,我們可以闡述出項(xiàng)目系統(tǒng)所需要的根本需求。下面講解播放器的各類基本節(jié)制需求。
首先,主界面會(huì)掃描手機(jī)的內(nèi)存卡里的本地歌曲,然后,依照手機(jī)里存有的歌曲簡(jiǎn)潔明了地表現(xiàn)出來,在歌曲的常規(guī)操縱方面有播放、暫停、上一首、下一首。在歌曲信息方面的控制有進(jìn)入歌曲列表、進(jìn)入專輯列表、檢查歌詞、拖動(dòng)歌曲進(jìn)度等。
用戶同時(shí)可以使用前一曲,后一曲等對(duì)歌曲的正常操縱。在歌曲信息方面的控制有進(jìn)入歌曲列表、進(jìn)入專輯列表、檢查歌詞、拖動(dòng)歌曲進(jìn)度等。
三、總體設(shè)計(jì)路線
因?yàn)榘沧寇浖拈_發(fā)和WEB的開發(fā)不同,首先,這個(gè)界面是一個(gè)很小的屏幕,但是在這個(gè)很小的屏幕上卻要表達(dá)清楚很多的功能,讓用戶得以接受,我們要認(rèn)真仔細(xì)地思考一下各項(xiàng)組件的擺放性問題,還要讓屏幕的轉(zhuǎn)動(dòng)更加靈活。其次,Android程序主要應(yīng)用在手持設(shè)備上,不論用戶是單手操作還是雙手操作,都必須考慮到組件擺放的易操作性,所以要考慮到組件擺放的區(qū)域問題,除此之外,在UI設(shè)計(jì)的編寫上也要考慮到代碼的可更改問題,如果單純的用XML文件實(shí)現(xiàn),那么,在軟件的進(jìn)一步更改開發(fā)上可能會(huì)遇到很大問題,所以該系統(tǒng)的大部分界面都是通過xml和Java代碼共同實(shí)現(xiàn)的。再次,在達(dá)成音樂播放器的界面計(jì)劃后就要對(duì)音樂播放器的功能模塊計(jì)劃了。對(duì)音樂播放器而言,最主要的仍是實(shí)現(xiàn)音樂播放的功效,全部的音樂播放功效是實(shí)現(xiàn),音樂文件是讀,讀信息的第一部門的音頻文件。最后,才是對(duì)音樂播放器的個(gè)性化設(shè)置,所以要做好這件事必須要做好充分的準(zhǔn)備。
四、音樂播放模塊設(shè)計(jì)
為了讓音樂播放器更人性化,能夠讓用戶在操縱這個(gè)軟件的時(shí)候更輕松隨意,在進(jìn)入到音樂播放界面后,用戶可以在這里對(duì)音樂進(jìn)行各項(xiàng)常規(guī)操縱,音樂播放的進(jìn)度條也在這里,讓用戶能夠感覺到很舒適,并且用戶能夠很簡(jiǎn)潔明了地觀看到曲目的各項(xiàng)信息。如果用戶在這里用屏幕劃動(dòng)的話,用戶還可以查看到歌曲的同步歌詞。
五、歌曲列表模塊
歌曲列表界面最主要的功能是它會(huì)主動(dòng)獲得各類歌曲信息,在內(nèi)存里獲取。在獲取的列表中只顯示歌曲所擁有的一些基本屬性,比如說歌名以及演唱者還有歌曲時(shí)長(zhǎng)等,當(dāng)用戶在點(diǎn)擊此列表時(shí)就會(huì)收到監(jiān)聽,然后調(diào)用代碼做出相應(yīng)的邏輯處理。
六、播放音軌SeekBar
為實(shí)現(xiàn)Runnable接口在其Run方法中發(fā)送Handler的消息,音軌與歌曲的進(jìn)度同步地實(shí)現(xiàn)是播放器最主要的一個(gè)地方。為了用來表現(xiàn)當(dāng)前歌曲播放的進(jìn)度的時(shí)候和全部歌曲的長(zhǎng)度,音軌設(shè)置了兩個(gè)TextView。方法SeekBar.setMax()會(huì)在這個(gè)歌曲剛剛開始播放的時(shí)候被調(diào)用,在此方法調(diào)用后獲得歌曲的最大長(zhǎng)度設(shè)置在進(jìn)度條中SeekBar.setMax(),SeekBar.setProgress(1)這個(gè)方法是為了設(shè)置我們歌曲進(jìn)度條的起先位置。
然后經(jīng)由過程Handler類來使得這個(gè)Android的線程來首先執(zhí)行,經(jīng)由過程Handler類來為線程與線程之間搭建起了通訊的橋梁,然后經(jīng)由過程實(shí)Runnable接口在其Run方法中發(fā)送Handler的消息。經(jīng)由過程run方法發(fā)向Handler類。這樣的話,Handler類就將對(duì)各種各樣的信息來進(jìn)行各種不同的代碼處理,這都取決于run方法發(fā)送而來的消息。
通過這種Handler的發(fā)消息機(jī)制就能獲得進(jìn)度條進(jìn)度,然后我們需要發(fā)送延遲消息一秒一發(fā),我們?cè)贖andlermessage方法中每秒接受發(fā)送過來的消息并時(shí)刻更新進(jìn)度,然后我們就會(huì)看到進(jìn)度條一秒往前滾動(dòng)一次。
當(dāng)SeekBar的各位置被用戶所舉行點(diǎn)擊時(shí),他就會(huì)主動(dòng)地監(jiān)聽位置,來執(zhí)行相對(duì)應(yīng)位置的表現(xiàn)。這樣就能夠使得歌詞會(huì)不斷地變更,但是進(jìn)度條上面的游標(biāo)卻不斷地挪動(dòng)。
七、播放調(diào)節(jié)功能實(shí)現(xiàn)
各個(gè)按鈕是水平放置的。每個(gè)按鈕的功效分別是上一首;播放;下一首功能按鈕。在這里利用的是結(jié)構(gòu)中的線性結(jié)構(gòu),將其布局的方向方式寫成水平方向。
其中API-Mediaplayer是Android自身的一個(gè)原生封裝完整的API,然而在成功調(diào)用這個(gè)接口一般需要調(diào)其API方法中的reset方法讓其初始化。然后還需要調(diào)用Prepare以及接下來的start方法使得音樂得以播放。調(diào)用MediaPlayer.Stop()的話就可以讓歌曲停止。
通過系統(tǒng)的體系結(jié)構(gòu)和設(shè)計(jì)方案的播放器的框架程序設(shè)計(jì),主要的開發(fā)語言和工具的支持,eclipsejavaandroid開發(fā)工具插件和AndroidSDK相結(jié)合,使得整個(gè)音樂播放系統(tǒng)得以全面實(shí)施。
參考文獻(xiàn)
[1]張利國(guó),代聞,龔海平.Android移動(dòng)開發(fā)案例詳解[M].北京:人民郵電出社,2012.
[2]何紅輝.Android源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)[M].北京:人民郵電出版社,2015.