畢業(yè)論文-基于android的MP3播放器的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
畢業(yè)論文-基于android的MP3播放器的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
畢業(yè)論文-基于android的MP3播放器的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
畢業(yè)論文-基于android的MP3播放器的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
畢業(yè)論文-基于android的MP3播放器的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 太原理工大學(xué)畢業(yè)設(shè)計(jì)(論文)用紙 。 Linux 內(nèi)核也同時(shí)作為硬件和軟件堆棧之間的硬件抽象層。同所有Linux內(nèi)核一樣,Android內(nèi)核是介于硬件層和軟件組之間的一個(gè)抽象層次2.2.1 應(yīng)用程序(APPLICATIONS)Android平臺(tái)默認(rèn)包含了一系列核心應(yīng)用程序,包括電子郵件、短信、日歷、地圖、瀏覽器、聯(lián)系人管理程序等,這些程序都以java 程序語言編寫,你也可以用自己便攜的應(yīng)用程序來替換Android提供的應(yīng)用程序,這個(gè)替換的機(jī)制實(shí)際是由應(yīng)用程序框架來保證的。如圖2-2所示。圖2-2 應(yīng)用層2.2.2 應(yīng)用程序框架(APPLICATION FRAMEWORK)應(yīng)用程序框架是我們進(jìn)

2、行Android開發(fā)的基礎(chǔ)應(yīng)用程序框架層包含了視圖系統(tǒng),內(nèi)容提供器,窗口管理器,活動(dòng)管理器,通知管理器,位置管理器,資源管理器,電話管理器和包管理器9大部分。如圖2-3所示。圖2-3 中間件層2.2.3 Android 運(yùn)行時(shí)(RUNTIME)Android 雖然采取Java程序語言來編寫應(yīng)用程序,但不使用J2ME執(zhí)行Java程序,而是用Android自有的Android運(yùn)行時(shí)(RunTime).Android 運(yùn)行時(shí)包括核心庫和Dalvik虛擬機(jī)兩部分。如圖2-4所示。圖2-4 核心庫,虛擬機(jī)2.2.4 系統(tǒng)庫(LIBRARIES)應(yīng)用程序框架是貼近于應(yīng)用程序的軟件組件服務(wù),而更底層則是An

3、droid的函數(shù)庫,這一部分是應(yīng)用程序框架的支撐,其架構(gòu)如圖2-5所示。圖2-5系統(tǒng)庫2.2.5 LinuxAndroid平臺(tái)是開放,采用Linux內(nèi)核則是Android平臺(tái)開放性的基礎(chǔ)。Android平臺(tái)中的操作系統(tǒng)采用了Linux2.6版的內(nèi)核,它包括了顯示驅(qū)動(dòng)、攝像頭驅(qū)動(dòng)、Flash內(nèi)存驅(qū)動(dòng)、Binder(IPC)驅(qū)動(dòng)、鍵盤驅(qū)動(dòng)、wifi驅(qū)動(dòng)、Audio驅(qū)動(dòng)以及電源管理部分。Linux內(nèi)核層為我們?cè)谲浖雍陀布咏⒘艘粋€(gè)抽象層,使得應(yīng)用程序開發(fā)人員無需關(guān)心硬件細(xì)節(jié)。對(duì)于手機(jī)的開發(fā)商而言,如果想要Android平臺(tái)運(yùn)行到自己的硬件平臺(tái)上就必須通過對(duì)Linux層進(jìn)行修改,通常要做的工作就是

4、為自己的硬件便攜驅(qū)動(dòng)程序。2.3 SQLite數(shù)據(jù)庫Android采用SQLite這個(gè)輕量級(jí)數(shù)據(jù)庫工具來管理數(shù)據(jù);SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型HYPERLINK /view/68446.htm數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是HYPERLINK /view/30741.htm嵌入式的,而且目前已經(jīng)在很多HYPERLINK /view/4085543.htm嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在HYPERLINK /view/2778983.htm嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支Windows/Linux/Unix等等主流的HYPERLINK /

5、view/880.htm操作系統(tǒng),同時(shí)能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的HYPERLINK /view/68446.htm數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個(gè)HYPERLINK /view/707803.htmAlpha版本誕生于2000年5月。 至今已經(jīng)有14個(gè)年頭,SQLite也迎來了一個(gè)版本 SQLite 3已經(jīng)發(fā)布。SQLite是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。不像常見的

6、客戶-服務(wù)器范例,SQLiteHYPERLINK /view/53607.htm引擎不是個(gè)HYPERLINK /view/17674.htm程序與之通信的獨(dú)立進(jìn)程,而是連接到程序中成為它的一個(gè)主要部分。所以主要的通信協(xié)議是在HYPERLINK /view/3281.htm編程語言內(nèi)的直接API調(diào)用。這在消耗總量、延遲時(shí)間和整體簡單性上有積極的作用。整個(gè)數(shù)據(jù)庫(定義、表、索引和數(shù)據(jù)本身)都在宿主主機(jī)上存儲(chǔ)在一個(gè)單一的文件中。它的簡單的設(shè)計(jì)是通過在開始一個(gè)事務(wù)的時(shí)候鎖定整個(gè)HYPERLINK /view/38752.htm數(shù)據(jù)文件而完成的。SQLite雖然很小巧,但是支持的SQL語句不會(huì)遜色于其他

7、開源數(shù)據(jù)庫,它支持的SQL包括:ATTACH DATABASE ,BEGIN TRANSACTION,COMMENT,COMMIT TRANSACTION,COPY,CREATE INDEX,CREATE TABLE,CREATE TRIGGER,CREATE VIEW,DELETE,DETACH DATABASE,DROP INDEX,DROP TABLE,DROP TRIGGER,DROP VIEW,END TRANSACTION,EXPLAIN,expression,INSERT,ON CONFLICT clausePRAGMA,REPLACE,ROLLBACK TRANSACTION,

8、SELECT,UPDATE。同時(shí)它還支持HYPERLINK /view/709594.htm事務(wù)處理功能等等。也有人說它象Microsoft的Access,有時(shí)候真的覺得有點(diǎn)象,但是事實(shí)上它們區(qū)別很大。比如SQLite 支持跨平臺(tái),操作簡單,能夠使用很多語言直接創(chuàng)建數(shù)據(jù)庫,而不象Access一樣需要Office的支持。2.4 Android開發(fā)環(huán)境的搭建在軟件開發(fā)中,大部分的軟件都需要配置開發(fā)環(huán)境才能夠使用,Android開發(fā)也不例外。下面介紹Android的開發(fā)環(huán)境配置:搭建開發(fā)環(huán)境需要的軟件:(1)操作系統(tǒng):Windows XP或Linux(2)軟件包:Android SDK(Softwa

9、re Development kit Java Development kit) 、ADT(Android Develoopment Tool)(3)IDE環(huán)境:IDE Eclipse +ADT Eclipse(4)JDK:Java Runtime Environment、Java Development kit安裝步驟如下:第一步:安裝Java虛擬機(jī)sun-java6-jdk版本,正常安裝即可,完成后需要配置環(huán)境變量。第二步:安裝Eclipse工具 官網(wǎng)/downloads/選擇版本,進(jìn)行安裝。Eclipse安裝包下載如圖2-6所示。圖2-6 Eclipse安裝包下載第三步:安裝安卓的SDK

10、包:首先在安卓開發(fā)者的官網(wǎng)下載SDK,具體下載地如下/sdk ,選擇自己的系統(tǒng)進(jìn)行下載安裝。如圖2-7所示。圖2-7 SDK包下載界面第四步:安裝Android ADT插件打開Eclipse,點(diǎn)擊help,然后點(diǎn)擊install new software ,再點(diǎn)擊add,然后會(huì)彈出一個(gè)框。如圖2-8所示。圖2-8 ADT插件安裝界面選擇瀏覽你下載的ADT插件的包,點(diǎn)擊OK按鈕,選擇需要安裝的包,占擊next按鈕,然后選擇接受協(xié)議,等到安裝成功以后重啟Eclipse工具,再設(shè)置Android SDK 環(huán)境,點(diǎn)擊Window然后Preferences,再選擇點(diǎn)擊Android。 如圖2-9所示。圖

11、2-9 配置開發(fā)環(huán)境在SDK location中輸入SDK Tools路徑:E:android_sdk點(diǎn)擊OK這樣Android環(huán)境就已經(jīng)搭建成功了。3 系統(tǒng)分析3.1 概述系統(tǒng)分析是在總體規(guī)劃的指導(dǎo)下,對(duì)某個(gè)或若干個(gè)子系統(tǒng)進(jìn)行深入仔細(xì)地調(diào)查研究,確定新系統(tǒng)邏輯功能的過程。這一階段的主要任務(wù)是由系統(tǒng)分析員了解每個(gè)業(yè)務(wù)流程,工作流程,廣大用戶的需求,運(yùn)用系統(tǒng)開發(fā)理論、開發(fā)方法和開發(fā)技術(shù)設(shè)計(jì)出一個(gè)計(jì)算機(jī)化的信息系統(tǒng)。3.1.1 系統(tǒng)分析的原則在系統(tǒng)分析中存在很多困難,為了克服困難,做好分析工作,在進(jìn)行系統(tǒng)分析時(shí)應(yīng)遵循系統(tǒng)分析的原則,這樣才能保證分析工作能夠順利進(jìn)行,系統(tǒng)分析的原則有:(1)邏輯設(shè)計(jì)

12、與物理設(shè)計(jì)分開的原則(2)面向用戶的原則(3)結(jié)構(gòu)化分析的原則通過實(shí)際調(diào)查并與相關(guān)用戶交流后,分析商品訂購網(wǎng)模擬網(wǎng)站的具體的要求,確定本網(wǎng)站系統(tǒng)的邏輯功能,以滿足用戶的各項(xiàng)要求,完成相應(yīng)的各項(xiàng)功能,提高網(wǎng)站的實(shí)用水平。在近期目標(biāo)完成后,該系統(tǒng)應(yīng)該有很強(qiáng)的擴(kuò)充性,便于在此基礎(chǔ)上進(jìn)行擴(kuò)充式開發(fā),為以后的發(fā)展及擴(kuò)充打好基礎(chǔ)。 3.1.2 系統(tǒng)分析的方法該系統(tǒng)采用以抽象和分解為手段,并且采用結(jié)構(gòu)化分析方法進(jìn)行系統(tǒng)分析,根據(jù)實(shí)際調(diào)查研究,對(duì)系統(tǒng)進(jìn)行自頂向下的逐層分解,逐步細(xì)分,逐步求精,建立新系統(tǒng)的邏輯模型,這個(gè)邏輯模型將盡可能避免使用計(jì)算機(jī)術(shù)語,讓其盡可能的簡單化、通俗化,便于設(shè)計(jì)者和瀏覽者的溝通與交

13、流經(jīng)驗(yàn)。結(jié)構(gòu)化分析方法的基本思想是該系統(tǒng)采用結(jié)構(gòu)化分析方法,以抽象和分解為手段,對(duì)系統(tǒng)進(jìn)行自頂向下的逐層分解,逐步細(xì)分,逐步求精,從而達(dá)到易于理解的目的。3.1.3 系統(tǒng)性能要求分析為了保證能夠長期、安全、穩(wěn)定、可靠的運(yùn)行,系統(tǒng)應(yīng)滿足以下性能要求:(1)系統(tǒng)處理的準(zhǔn)確性與及時(shí)性:系統(tǒng)處理的準(zhǔn)確性和及時(shí)性是系統(tǒng)的必要性能。在系統(tǒng)設(shè)計(jì)和開發(fā)過程中,充分考慮當(dāng)前和將來可能承受的工作量,使系統(tǒng)的處理能力和相應(yīng)時(shí)間能夠滿足信息處理的要求。 (2)系統(tǒng)的可擴(kuò)充性及可維護(hù)性,系統(tǒng)的開發(fā)過程中,應(yīng)該充分考慮以后的可擴(kuò)充性相當(dāng)于升級(jí)。當(dāng)今企業(yè)對(duì)系統(tǒng)的可維護(hù)性也有了相當(dāng)高的關(guān)注。例如添加新功能。所以本系統(tǒng)采用了C

14、S開發(fā)模式,大幅提高了系統(tǒng)的可擴(kuò)展性及可維護(hù)性。 (3)系統(tǒng)的可兼容性,考慮到目前Android版本眾多、設(shè)備眾多,所以設(shè)計(jì)出的程序必需要求可以兼容各個(gè)主流版本。(4)系統(tǒng)的可靠性, 可靠性是保證系統(tǒng)正常工作及抗故障、抗干擾的能力,它包括:保證系統(tǒng)正常工作的能力;對(duì)系統(tǒng)故障的預(yù)防、檢測以及自動(dòng)糾錯(cuò)的能力;出現(xiàn)故障時(shí),保證系統(tǒng)不發(fā)生崩潰,并使系統(tǒng)重新恢復(fù)、重新啟動(dòng)的能力等安全性是保證合法用戶能夠正確使用信息系統(tǒng),并防止非法用戶訪問信息系統(tǒng)的能力適應(yīng)性是信息系統(tǒng)對(duì)外部環(huán)境和需求變化的適應(yīng)能力。3.2 系統(tǒng)可行性分析可行性研究的目的,就是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。要達(dá)到這個(gè)

15、目的,必須分析幾種主要的可能解法的利弊,從而判斷原定的系統(tǒng)規(guī)模和目標(biāo)是否現(xiàn)實(shí),系統(tǒng)完成后所能帶來的效益是否大到值得投資開發(fā)這個(gè)系統(tǒng)的程度。因此,可行性研究實(shí)質(zhì)上是對(duì)進(jìn)行了一次較大壓縮簡化后的系統(tǒng)進(jìn)行分析和設(shè)計(jì)的過程,也就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過程。系統(tǒng)的可行性分析主要包括經(jīng)濟(jì)上的可行性,技術(shù)上的可行性,操作上的可行性和法律上的可行性。經(jīng)濟(jì)可行性目標(biāo)系統(tǒng)開發(fā)經(jīng)濟(jì)需求的比較低,加上具有成熟的Android平臺(tái)以及十分普及手機(jī)設(shè)備,所以在軟硬件的支出上十分有限。而且,目標(biāo)系統(tǒng)并是十分的復(fù)雜,開發(fā)的周期較短,人員經(jīng)濟(jì)支出有限。當(dāng)系統(tǒng)開發(fā)成后,通過測試和、試運(yùn)行和實(shí)際應(yīng)用后,

16、將很大程度上提高移動(dòng)公交查詢系統(tǒng)的科學(xué)性和高效性,在為人們帶來便利的同時(shí),也為系統(tǒng)的進(jìn)一步推廣、創(chuàng)新創(chuàng)造了條件,這帶來的經(jīng)濟(jì)回報(bào)將遠(yuǎn)超過支出,并且最重要的一點(diǎn)是通過該系統(tǒng)的開發(fā),可以使我們進(jìn)一步理解軟件工程思想和軟件開發(fā)流程,為從事軟件開發(fā)工作打下很好的基礎(chǔ),從長遠(yuǎn)利益來考慮,本課題的設(shè)計(jì)開發(fā)還是具有相當(dāng)大的經(jīng)濟(jì)可行性的。技術(shù)可行性本系統(tǒng)使用Android技術(shù)進(jìn)行開發(fā),發(fā)展到現(xiàn)在,Android已經(jīng)算是一個(gè)較成熟的平臺(tái)了,現(xiàn)在有越來越多的企業(yè)及技術(shù)人員選擇它作為開發(fā)平臺(tái)。因此,在技術(shù)上.NET是完全可以勝任這個(gè)平臺(tái)的開發(fā)。Android開發(fā)平臺(tái)是由谷歌與 HYPERLINK t _blank

17、開放手機(jī)聯(lián)盟合作開發(fā)的一個(gè)開放、自由的移動(dòng)終端平臺(tái),它由操作系統(tǒng)、中間件、應(yīng)用軟件三部分組成。該平臺(tái)備有完善的程序開發(fā)環(huán)境,包括模擬器、除錯(cuò)工具、程序執(zhí)行所耗用存儲(chǔ)器、性能評(píng)介等功能。操作可行性本系統(tǒng)用戶只要有一臺(tái)Android手機(jī),就可以使用了,系統(tǒng)是由的操作都是用戶熟悉的選擇框或者按鈕等等。所有的操作通過手機(jī)就可以完成,用戶不需培訓(xùn),只要稍微提示一下即可。因此,在操作使用上,本系統(tǒng)簡單、方便,易于使用戶接受,因而是十分可行的。法律可行性由于本系統(tǒng)是在相關(guān)法律法規(guī)下實(shí)施完成的,所以不存在任何法律問題,在法律上是完全可行的。綜合考慮經(jīng)濟(jì)、技術(shù)、操作和法律等方面的因素,該系統(tǒng)可以立即開始進(jìn)行。3

18、.3 系統(tǒng)主要功能分析3.3.1 本地播放模塊(1) 播放列表:系統(tǒng)具有默認(rèn)播放列表,默認(rèn)播放列表包含了所有掃描到的歌曲,默認(rèn)列表不允許刪除。(2)自定義列表:用戶可以新建一個(gè)或多個(gè)自定義列表,可以往自定義列表里添加歌曲。(3)歌曲掃描:用戶可以掃描SD卡的一切歌曲文件。(4)刪除歌曲:用戶可以刪除列表中的任何一首歌曲。(5)歌曲播放:用戶可以選擇一個(gè)本地歌曲播放,播放時(shí)可以選擇上一首、下一首、暫停,快進(jìn),重播 等操作;(6)播放模式:播放歌曲時(shí),用戶可以選擇歌曲播放模式,例如順序播放、隨機(jī)播放或者單曲循環(huán);(7)歌詞顯示:在上傳歌詞的情況下可同步顯示歌詞3.4 系統(tǒng)流程分析本系統(tǒng)完成一個(gè)音樂

19、文件的播放流程功能,用戶可以選擇本地播放或在線播放,例如選擇本地播放后則會(huì)進(jìn)入本地播放列表,包括默認(rèn)列表和自定義列表,用戶選擇任何一個(gè)列表即可看到該列表中的所有歌曲,點(diǎn)擊一個(gè)歌曲即可播放,播放過程中可以選擇暫停、下一首、上一首,快進(jìn),重播操作。具體系統(tǒng)的流程圖3-1所示。圖 3-1 系統(tǒng)播放流程圖4 系統(tǒng)設(shè)計(jì)4.1 系統(tǒng)設(shè)計(jì)目標(biāo)在系統(tǒng)分析的基礎(chǔ)上,設(shè)計(jì)出能滿足預(yù)定目標(biāo)的系統(tǒng)的過程。系統(tǒng)設(shè)計(jì)內(nèi)容主要包括:確定設(shè)計(jì)方針和方法,將系統(tǒng)分解為若干子系統(tǒng),確定各子系統(tǒng)的目標(biāo)、功能及其相互關(guān)系,決定對(duì)子系統(tǒng)的管理體制和控制方式,對(duì)各子系統(tǒng)進(jìn)行技術(shù)設(shè)計(jì)和評(píng)價(jià),對(duì)全系統(tǒng)進(jìn)行技術(shù)設(shè)計(jì)和評(píng)價(jià)等。本系統(tǒng)是設(shè)計(jì)目標(biāo)是

20、建立一個(gè)基于Android的音樂播放器軟件,基本可以的滿足人們對(duì)音樂文件的播放功能,系統(tǒng)具有上手簡單、操作方便快捷的特點(diǎn)。用戶界面漂亮、操作簡單,每個(gè)設(shè)計(jì)都具有人性化的特點(diǎn),具有使用簡單,功能全面的特點(diǎn),通過合理而先進(jìn)的優(yōu)化,保證了系統(tǒng)的可靠性與容錯(cuò)性。系統(tǒng)的設(shè)計(jì)主要考慮了用戶需求,大大為用戶著想,為用戶提供簡單完善實(shí)用的音樂播放器。 4.2 系統(tǒng)功能模塊設(shè)計(jì)本系統(tǒng)本地播放模塊和在線播放模塊,都是由幾個(gè)子模塊構(gòu)成,其中本地播放模塊主要包括:默認(rèn)列表、自定義列表、歌曲掃描、歌曲提取、歌曲播放、播放控制和播放模式等等。在線播放模塊包括音樂文件緩沖、顯示歌詞,文件播放等功能,模塊架構(gòu)設(shè)計(jì)如圖4-1所

21、示。圖 4-1 系統(tǒng)功能模塊圖4.3 數(shù)據(jù)庫設(shè)計(jì)本系統(tǒng)用到的數(shù)據(jù)庫為Android自帶的SQLite數(shù)據(jù)庫,系統(tǒng)采用三個(gè)數(shù)據(jù)表來記錄信息,分別是音樂播放表、本地列表信息和列表歌曲對(duì)應(yīng)表。其中音樂播放表記錄的是音樂的播放記錄,例如一個(gè)音樂被播放了多少次還有最近一次的播放時(shí)間。本地列表信息記錄自定義的列表名稱信息,而列表歌曲對(duì)應(yīng)表則記錄自定義列表個(gè)歌曲的對(duì)應(yīng)信息。表4-1至表4-3為數(shù)據(jù)庫設(shè)定設(shè)定。表4-1 music 音樂播放信息表 序 號(hào)列 名數(shù)據(jù)類型 主 鍵 說 明1_idint 是 2music_idint 音樂ID3clicksint 播放次數(shù)4latestVarchar 最后播放時(shí)間表

22、4-2 LocalListInfo本地列表信息序 號(hào)列 名數(shù)據(jù)類型 主 鍵 說 明1Idint 是 2namenvarchar列表名稱3createtimenvarchar 創(chuàng)建時(shí)間 表4-3 LocalListDetailInfo列表-歌曲對(duì)應(yīng)表序 號(hào)列 名數(shù)據(jù)類型 主 鍵 說 明1Idint 是 2listidnvarchar列表ID3mediaidvarchar音樂ID4createtimenvarchar添加時(shí)間4.4 工程文件結(jié)構(gòu)設(shè)計(jì)在程序開發(fā)階段,首先確定“即Android的音樂播放器系統(tǒng)”的工程名稱為MusicPlayerApp,根據(jù)程序模塊設(shè)計(jì)的內(nèi)容,建立MusicPlayer

23、App項(xiàng)目, MusicPlayerApp項(xiàng)目,的文件結(jié)構(gòu)如圖4-2所示。圖 4-2 工程結(jié)構(gòu)圖為了使代碼文件結(jié)構(gòu)更加清晰, MusicPlayerApp工程設(shè)置了多個(gè)命名空間,分別保存了用戶界面、數(shù)據(jù)適配器、常用類庫和實(shí)體多個(gè)包,源代碼的名稱以及說明如表4-3所示。表4-3 系統(tǒng)代碼結(jié)構(gòu)包名稱文件名說明com.music.mediaMainActivity.java主界面視圖com.music.mediaLocalListActivity.java本地播放列表視圖com.music.mediaMainLocalActivity.java本地歌曲界面視圖com.music.mediaMusic

24、PlayerActivity.java本地歌曲播放界面視圖com.music.mediaMusicService.java音樂播放后臺(tái)服務(wù)com.music.mediaOnLineMediaPlayer.java在線播放界面視圖com.music.mediaRecentlyActivity.java最近播放界面視圖com.music.mediaScanSdReceiver.java歌曲掃描接收器Android的資源文件保存在/res的子目錄中。其中、/res/anim目錄中保存的是產(chǎn)生動(dòng)畫效果的XML文件,/res/drawable/目錄中保存的是圖像文件,/res/values目錄中保存的是

25、用來自定義字符串和顏色的文件,/res/xml目錄中保存的是XML格式的數(shù)據(jù)文件。所有在程序開發(fā)階段可以被調(diào)用的資源都保存在這些目錄中,具體每個(gè)資源文件的用途可以參考表4-4。表4-4 資源文件名稱及用途資源目錄 文件名 說 明Drawablebtn_blue_selector.xml 按鈕資源文件btn_white_selector.xmllistview_item_selector.xmlsys_app_actshape.xmlsys_app_selector.xmlsys_apptop_corners.xmlLayoutlayout_main.xml主界面布局文件layout_mainl

26、ocal.xml本地列表布局文件layout_player.xml本地歌曲播放界面布局文件layout_recently.xml最近播放布局文件layout_scan.xml自定義掃描布局文件file_create.xml文件創(chuàng)建布局文件listview_item_file.xml文件列表Listview文件menumain_menu.xml文件管理上下文菜單布局文件valuesstyles.xml樣式資源文件colors.xml顏色資源文件strings.xml字符串資源文件5 系統(tǒng)編碼實(shí)現(xiàn)與測試5.1 音樂播放Service實(shí)現(xiàn)Service是android 系統(tǒng)中的四大組件之一(Acti

27、vity、Service、BroadcastReceiver、ContentProvider),它跟Activity的級(jí)別差不多,但不能自己運(yùn)行只能后臺(tái)運(yùn)行,并且可以和其他組件進(jìn)行交互。service可以在很多場合的應(yīng)用中使用,比如播放多媒體的時(shí)候用戶啟動(dòng)了其他Activity這個(gè)時(shí)候程序要在后臺(tái)繼續(xù)播放,比如檢測SD卡上文件的變化,再或者在后臺(tái)記錄你地理信息位置的改變等等,總之服務(wù)總是藏在后臺(tái)的。本系統(tǒng)的音樂播放就要用到一個(gè)運(yùn)行再后臺(tái)的Service,它負(fù)責(zé)音樂的播放職能。首先我們創(chuàng)建一個(gè)MusicService集成Service,然后重載其onCreate、onStart等等幾個(gè)方法來控制

28、音樂的播放。public class MusicService extends Service implementsMediaPlayer.OnCompletionListener Overridepublic void onCreate() super.onCreate();if (mp != null) mp.reset();mp.release();mp = null;mp = new MediaPlayer();mp.setOnCompletionListener(this);/* 注冊(cè)來電接收器*/IntentFilter filter = new IntentFilter();fi

29、lter.addAction(ent.action.ANSWER);registerReceiver(InComingSMSReceiver, filter);rHandler = new Handler();fHandler = new Handler();Overridepublic void onStart(Intent intent, int startId) super.onStart(intent, startId);/* 初始化mp*/if (flag = 0) & (intent.getExtras().getInt(list) = 1) System.out.println(

30、Service flag=0);return;if (intent.getIntArrayExtra(_ids) != null) _ids = intent.getIntArrayExtra(_ids);int position1 = intent.getIntExtra(position, -1);if (position1 != -1) position = position1;_id = _idsposition;int length = intent.getIntExtra(length, -1);if (_id != -1) if (id != _id) id = _id;uri

31、= Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, + _id);DBOperate(_id);try mp.reset();mp.setDataSource(this, uri); catch (Exception e) e.printStackTrace(); else if (length = 1) try mp.reset();mp.setDataSource(this, uri); catch (Exception e) e.printStackTrace();setup();init();if (p

32、osition != -1) Intent intent1 = new Intent();intent1.setAction(MUSIC_LIST);intent1.putExtra(position, position);sendBroadcast(intent1);System.out.println(Service position: + position); /* 開始、暫停、停止 */int op = intent.getIntExtra(op, -1);if (op != -1) switch (op) case MUSIC_PLAY:/ 播放if (!mp.isPlaying()

33、 play();break;case MUSIC_PAUSE:/ 暫停if (mp.isPlaying() pause();break;case MUSIC_STOP:/ 停止stop();break;case PROGRESS_CHANGE:/ 改變歌曲進(jìn)度currentTime = intent.getExtras().getInt(progress);mp.seekTo(currentTime); break;5.2 功能模塊的實(shí)現(xiàn)5.2.1 主界面實(shí)現(xiàn)在點(diǎn)擊進(jìn)入音樂播放器界面之前的主界面,如圖5-1所示。圖5-1 主界面本系統(tǒng)實(shí)現(xiàn)一個(gè)音樂播放器的基本功能,包括本地播放和在線播放,系統(tǒng)主

34、界面主要實(shí)現(xiàn)了這些功能的入口菜單顯示,通過一個(gè)ListView組件來顯示“本地音樂”、“在線音樂”、“最近播放列表”和“退出”四個(gè)操作。當(dāng)用戶選本地播放后系統(tǒng)會(huì)進(jìn)入本地音樂列表;當(dāng)用戶選擇在線播放后,系統(tǒng)會(huì)進(jìn)入在線播放;當(dāng)用戶選擇最近播放列表后,系統(tǒng)會(huì)顯示出最近的播放音樂列表;當(dāng)用戶選擇退出后,系統(tǒng)會(huì)關(guān)閉。具體的實(shí)現(xiàn)效果如圖5-2所示。圖5-2 播放器主界面5.2.2 本地播放列表實(shí)現(xiàn)當(dāng)用戶進(jìn)入本地音樂模塊后可以看到本地播放列表,該列表也是通過一個(gè)ListView組件來實(shí)現(xiàn),用戶第一次使用時(shí),本地播放列表只有一個(gè)項(xiàng),那就是默認(rèn)列表,而后面的列表名稱都需要用戶自己添加,用戶可以通過手機(jī)的菜單鍵來

35、添加自定義列表,只需要輸入列表名稱并單擊確定即可添加。成功添加后的列表名稱將會(huì)被存入SQLite數(shù)據(jù)庫,下次再進(jìn)入該列表時(shí),系統(tǒng)會(huì)自動(dòng)把所有自定義列表名稱從SQLite數(shù)據(jù)庫提取出來并顯示。上下文菜單和新建列表彈出框可以通過復(fù)寫Activity的onOptionsItemSelected方法和AlertDialog.Builder一起協(xié)助實(shí)現(xiàn)。具體的實(shí)現(xiàn)效果如圖5-3所示。圖5-3 本地播放列表界面5.2.3 音樂列表實(shí)現(xiàn)當(dāng)用戶選擇一個(gè)播放列表后,即可進(jìn)入該列表的詳細(xì)界面,詳細(xì)界面列舉了該列表下的所有音樂文件信息,包括歌曲名稱、藝術(shù)家和歌曲的播放時(shí)長,點(diǎn)擊一個(gè)歌曲可以進(jìn)入歌曲播放界面。另外,長

36、按一個(gè)歌曲可以彈出上下文菜單,菜單項(xiàng)包括“播放”、“刪除”和“添加到列表”,選擇刪除可以刪除一個(gè)歌曲信息,選擇添到列表可以把該歌曲添加到用戶想要的列表中去。具體的實(shí)現(xiàn)效果如圖5-4和5-5所示。 圖5-4 進(jìn)入音樂列表界面 圖5-5 音樂列表界面5.2.4 音樂播放界面實(shí)現(xiàn)該界面位系統(tǒng)核心界面,負(fù)責(zé)歌曲的播放工作。該界面用到的主要組件包括ImageView、SeekBar、ImageButton和Button等,播放時(shí)可以通過下方的“上一首”、“暫?!?、“下一首”和“停止”按鈕來控制音樂的播放。自定義SeekBar風(fēng)格:同時(shí)用戶可以通過右上角的播放模式按鈕來控制音樂的播放模式,例如順利播放、隨

37、機(jī)播放等;音樂播放時(shí),如果存在歌詞文件,則系統(tǒng)會(huì)同步顯示歌詞,系統(tǒng)顯示歌詞步驟:把歌詞文件讀取到BufferedReader中;解析讀取到的文本信息,提取其中時(shí)間和歌詞文字;通過歌曲當(dāng)前播放時(shí)間和歌詞各段時(shí)間對(duì)比,顯示對(duì)應(yīng)的歌詞信息;具體的實(shí)現(xiàn)效果如圖5-6所示。圖5-6 音樂播放界面點(diǎn)擊右雙箭頭可進(jìn)去下一曲,左箭頭可進(jìn)入上一曲。如圖5-7所示。 圖5-7 下一曲界面 解析歌詞部分代碼:/* 解析歌詞* * param path*/private void read(String path) lrc_map.clear();TreeMap lrc_read = new TreeMap();St

38、ring data = ;BufferedReader br = null;File file = new File(path);if (!file.exists() lrcText.setText(歌詞文件不存在.);return;FileInputStream stream = null;try stream = new FileInputStream(file);br = new BufferedReader(new InputStreamReader(stream, UTF-8); catch (FileNotFoundException e) e.printStackTrace();

39、 catch (UnsupportedEncodingException e) e.printStackTrace();try while (data = br.readLine() != null) BaseUtil.LogI(0011: + data.length();if (data.length() 6) if (data.charAt(3) = : & data.charAt(6) = .) / 從歌詞正文開始data = data.replace(, );data = data.replace(, );data = data.replace(., :);BaseUtil.LogI(

40、data + data);String lrc = data.split();String lrcContent = null;if (lrc.length = 2) lrcContent = lrclrc.length - 1;/ 歌詞 else lrcContent = ;String lrcTime = lrc0.split(:);int m = Integer.parseInt(lrcTime0);/ 分int s = Integer.parseInt(lrcTime1);/ 秒int ms = Integer.parseInt(lrcTime2);/ 毫秒int begintime

41、= (m * 60 + s) * 1000 + ms;/ 轉(zhuǎn)換成毫秒LRCbean lrcbean = new LRCbean();lrcbean.setBeginTime(begintime);/ 設(shè)置歌詞開始時(shí)間lrcbean.setLrcBody(lrcContent);/ 設(shè)置歌詞的主體lrc_read.put(begintime, lrcbean);stream.close(); catch (IOException e) e.printStackTrace();/ 計(jì)算每句歌詞需要的時(shí)間lrc_map.clear();data = ;Iterator iterator = lrc_

42、read.keySet().iterator();LRCbean oldval = null;int i = 0;while (iterator.hasNext() Object ob = iterator.next();LRCbean val = lrc_read.get(ob);if (oldval = null) oldval = val; else LRCbean item1 = new LRCbean();item1 = oldval;item1.setLineTime(val.getBeginTime() - oldval.getBeginTime();lrc_map.put(ne

43、w Integer(i), item1);i+;oldval = val;5.2.5 在線音樂界面實(shí)現(xiàn)此設(shè)計(jì)是在線播放音樂時(shí)只要緩沖部分音樂即可播放。具體的實(shí)現(xiàn)效果如圖5-8所示。 圖5-8 在線音樂播放界面5.2.6 最近播放界面實(shí)現(xiàn)系統(tǒng)每次播放一個(gè)歌曲,系統(tǒng)都會(huì)自動(dòng)把本次播放記錄添加到SQLite數(shù)據(jù)庫表中,以便跟蹤用戶的播放記錄,而在最近播放功能模塊里,系統(tǒng)則是從SQLite數(shù)據(jù)庫表中提出用戶最近的播放記錄,根據(jù)過去所有記錄到的播放信息,乳溝按時(shí)間倒序排序即可得到最近用戶播放的音樂曲目信息。提取相關(guān)信息后,通過ListView組件把最近播放的曲目信息顯示出來,這樣就完成了最近播放界面的功

44、能。具體的實(shí)現(xiàn)效果如圖5-9所示。圖5-9 最近播放界面6 系統(tǒng)測試6.1 測試的重要性在發(fā)布新產(chǎn)品之前做好測試,提高軟件產(chǎn)品質(zhì)量,減少漏洞,是預(yù)防遭受木馬攻擊和提高性能的根本途徑,零缺陷的軟件是不存在的。但通過必要的測試,軟件缺陷可減少75%,降低軟件使用風(fēng)險(xiǎn)。有關(guān)機(jī)構(gòu)研究表明,國外軟件開發(fā)廠商約40%的工作量要花在測試上,對(duì)一些可靠性、安全性要求較高的軟件更是不惜人力物力。以微軟為例,早在1999年發(fā)布Windows2000操作系統(tǒng)時(shí),微軟就投入了250多個(gè)項(xiàng)目經(jīng)理、1700多個(gè)開發(fā)人員,內(nèi)部測試人員則達(dá)到3200人,比前兩者的之和還要多。而這對(duì)非科班出身的Google來說,遠(yuǎn)不能及。 由

45、此可看出對(duì)軟件進(jìn)行測試是非常必要的。6.2 測試的目的 一個(gè)程序并不可能達(dá)到十分完美,難免存在一些錯(cuò)誤,就是我們常說的bug。如果不能及時(shí)將其找出并修改,會(huì)造成系統(tǒng)崩潰并造成不必要的損失。通過軟件測試,盡可能多的找出系統(tǒng)中的錯(cuò)誤,以便于及時(shí)修改。6.3 系統(tǒng)測試用例和總結(jié)通過測試系統(tǒng)的本地自定義列表添加歌曲是否正常。進(jìn)入默認(rèn)列表,選擇一個(gè)歌曲長按,系統(tǒng)彈出上下文菜單,選擇“添加到列表”,這里我們選擇“我的列表1”,點(diǎn)擊“確定”按鈕完成添加,返回到我的列表1,查看剛添加的歌曲是否已經(jīng)存在于該列表中,結(jié)果如圖6-1 至6-3所示。 6-1 測試用例圖 任何歌曲長按鼠標(biāo)左鍵,會(huì)彈出上述對(duì)話框,點(diǎn)擊添

46、加到列表。會(huì)出現(xiàn)一個(gè)選擇對(duì)話框,如圖6-2所示。 圖6-2 測試用例圖 選擇任何一個(gè)列表,單擊確定,查看歌曲是否導(dǎo)入被點(diǎn)擊列表,如圖6-3所示。圖6-3 測試用例圖可以看到剛才添加的歌曲已經(jīng)在列表中,由此可見程序是沒問題的;經(jīng)過上述測試,本系統(tǒng)各項(xiàng)操作中均可按照預(yù)期的設(shè)計(jì)運(yùn)行,實(shí)現(xiàn)了系統(tǒng)的開發(fā)目標(biāo)與要求。重要的是,還要從最終用戶的角度進(jìn)行安全性和可用性測試。完成了系統(tǒng)的基本功能。實(shí)施開發(fā)計(jì)劃管理,質(zhì)量計(jì)劃管理,進(jìn)行產(chǎn)品的設(shè)計(jì)和實(shí)現(xiàn);進(jìn)行多層次的測試和驗(yàn)證,交付安裝時(shí)提供義務(wù)期限;提供維護(hù)支持、配置管理、文檔控制、質(zhì)量記錄、培訓(xùn)人員和其它支持活動(dòng)等; 總之,加強(qiáng)質(zhì)量管理,針對(duì)所有可能影響軟件質(zhì)量

47、的各個(gè)因素都要采取有力措施,作出加強(qiáng)質(zhì)量管理和控制的決定。與質(zhì)量有關(guān)的人員都要規(guī)定其職責(zé)和權(quán)限,使責(zé)任落實(shí)到人,保證產(chǎn)品質(zhì)量真正得到控制???結(jié)本文主要是對(duì)Android平臺(tái)音樂播放器的分析設(shè)計(jì),主要實(shí)現(xiàn)了音樂的播放、暫停、上一曲、下一曲、音樂列表、聲音控制、退出菜單、播放模式等功能。在本文中第一章簡要的介紹了選題依據(jù)背景、研究現(xiàn)狀等;第二章中講述了Android的開發(fā)基礎(chǔ);第三章進(jìn)行了詳盡的系統(tǒng)需求分析;第四章進(jìn)行詳細(xì)設(shè)計(jì)以及編碼實(shí)現(xiàn)工作;最后的第五章進(jìn)行了軟件的測試工作,完善軟件。本設(shè)計(jì)的音樂播放器軟件能夠穩(wěn)定運(yùn)行,體積小且反映靈敏,但還是有幾點(diǎn)不足的地方,例如最近播放列表無法排序、代碼編

48、寫冗余重復(fù)率高、圖片素材布局不太美觀等等。在以后我會(huì)改進(jìn)軟件的不足,以更優(yōu)的編碼水平,更高超的布局思維模型,并且學(xué)習(xí)更多新的知識(shí)重構(gòu)這款軟件。這款播放器軟件還是比較好的,適用于低端智能手機(jī)市場,有良好的用戶體驗(yàn)和反應(yīng)速度。相信隨著智能手機(jī)在發(fā)展中國家的普及,它們市場上會(huì)擁有龐大的用戶群。致 謝在本次畢業(yè)論文過程中,得到了學(xué)校朱曉軍老師,上?;睾?,郭丹老師的指導(dǎo)與支持。在此特別感謝三位老師的大力幫助。三位老師的悉心指導(dǎo)和諄諄教誨,在總體結(jié)構(gòu)、功能的把握上給予了非常大的幫助,同時(shí)給予我們提供了非常優(yōu)越、寬松的設(shè)計(jì)環(huán)境,并對(duì)我在編程設(shè)計(jì)、論文格式結(jié)構(gòu)等細(xì)節(jié)工作上給予了耐心的指導(dǎo),對(duì)于我順利完成這

49、次畢業(yè)論文起到了關(guān)鍵性的作用。通過開發(fā)本系統(tǒng),我較全面的掌握了android的基本知識(shí)和編程技巧,并在開發(fā)過程中我的java開發(fā)能力得到了進(jìn)一步的提高。在開發(fā)過程中我學(xué)到了一些經(jīng)驗(yàn):系統(tǒng)需求分析的是否合理將決定著的系統(tǒng)開發(fā)成功與否,一份合理的需求分析將是成功開發(fā)主要因素。我們?cè)谥珠_發(fā)之前不要急于編程,先應(yīng)有較長的時(shí)間去把分析做好,寫出相關(guān)的開發(fā)文檔等。然后再開始編寫程序代碼,這樣做到每寫一步代碼就會(huì)心底有數(shù),有條不紊。當(dāng)然也有些還需要繼續(xù)深入地方如:最近播放存儲(chǔ)不上、圖片素材布局不太美觀的問題等等。參考文獻(xiàn)1 宋小倩,周東升. HYPERLINK /kcms/detail/detail.as

50、px?filename=RJDK201102042&dbcode=CJFQ&dbname=CJFD2011&v=MTgyODFyQ1VSTDZmWk9kdEZpRG1VYi9PTnlmUFpiRzRIOURNclk5QlpvUitDMzg0emg0WG5EMExUZzJYMmhzeEY= t _blank 基于Android平臺(tái)的應(yīng)用開發(fā)研究J. 軟件導(dǎo)刊. 2011(02)2 季光獻(xiàn). HYPERLINK /kcms/detail/detail.aspx?filename=RJZZ201110018&dbcode=CJFQ&dbname=CJFD2011&v=MTYyNTZVYi9PTnlm

51、UmRMRzRIOUROcjQ5RWJJUitDMzg0emg0WG5EMExUZzJYMmhzeEZyQ1VSTDZmWk9kdEZpRG0= t _blank Android系統(tǒng)環(huán)境下應(yīng)用前景與開發(fā)研究J. 軟件. 2011(10)3 公磊,周聰;基于Android的移動(dòng)終端應(yīng)用程序開發(fā)與研究J;計(jì)算機(jī)與現(xiàn)代化; 2008(8);85-894 Shane Conder;Android Wireless Application DevelopmentM;Boston:Addison-Wesley,2010 5 Haseman Chris;Android EssentialsM;Apress:

52、the Experts Voice;20086 楊豐盛;Android應(yīng)用開發(fā)揭秘M;北京:機(jī)械工業(yè)出版社;20107 張利國,代聞,龔海平;Android移動(dòng)開發(fā)案例詳解M;北京:人民郵電出版社;20108 葉達(dá)峰;Eclipse編程技術(shù)與實(shí)例M;北京:人民郵電出版社;20069 Shane Condor,Lauren Decry;Android移動(dòng)應(yīng)用開發(fā)從入門到精通M;北京:人民郵電出版社;201010 馬越;Android的架構(gòu)與應(yīng)用D;北京:中國地質(zhì)大學(xué)(北京)碩士學(xué)位論文;2008:9-2011 Android Application FundamentalsA. Proceedi

53、ngs of 2011 IEEE International Conference on Intelligent Computing and Intelligent Systems(ICIS 2011) vol.02C. 201112 Patrick P.F. Chan,Lucas C.K. Hui,S.M. Yiu. HYPERLINK /kcms/detail/detail.aspx?filename=IEEE201109001146&dbcode=IPFD&dbname=IPFD2011&v=MjU0NDIyVXFtQkFEN3VRS3JpZlp1SnZGU2ptVTc3SklWMGNM

54、Q2pPYTdHNEg5RE1wbzlGWmVvTENoTkl5QlVTNnpkNVBu t _blank A Privilege Escalation Vulnerability Checking System for Android ApplicationsA. Proceedings of 2011 IEEE 13th International Conference on Communication Technology(ICCT 2011)C. 201113 M Sharpe. HYPERLINK /Detail/SJWCTEMP_U/SJWC13010800744570 t _bl

55、ank The 21st century analyst: developments in data analysis and visualisation.J.Journal of environmental monitoring : JEM,2002,4(3) 14 Joo. HYPERLINK /Detail/SJWCTEMP_U/SJWC13010800722058 t _blank Encouraging customers to pay less for mobile telecommunication services.J.The Journal of Database Marke

56、ting,2002,9(4)外文及翻譯Application Fundamentals Android applications are written in the Java programming language. The compiled Java code along with any data and resource files required by the application is bundled by the aapt tool into an Android package, an archive file marked by an .apk suffix. This

57、 file is the vehicle for distributing the application and installing it on mobile devices; its the file users download to their devices. All the code in a single .apk file is considered to be one application.In many ways, each Android application lives in its own world:1. By default, every applicati

58、on runs in its own Linux process. Android starts the process when any of the applications code needs to be executed, and shuts down the process when its no longer needed and system resources are required by other applications.2. Each process has its own virtual machine (VM), so application code runs

59、 in isolation from the code of all other applications.3. By default, each application is assigned a unique Linux user ID. Permissions are set so that the applications files are visible only to that user and only to the application itself although there are ways to export them to other applications a

60、s well.Its possible to arrange for two applications to share the same user ID, in which case they will be able to see each others files. To conserve system resources, applications with the same ID can also arrange to run in the same Linux process, sharing the same VM.Application ComponentsA central

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論