基于Android系統的音樂播放器的設計與實現畢業論文_第1頁
基于Android系統的音樂播放器的設計與實現畢業論文_第2頁
基于Android系統的音樂播放器的設計與實現畢業論文_第3頁
基于Android系統的音樂播放器的設計與實現畢業論文_第4頁
基于Android系統的音樂播放器的設計與實現畢業論文_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于Android系統的音樂播放器的設計與實現摘要:進入21世紀的數字時代,網絡發展十分的迅猛,在現今工作壓力大的社會下,娛樂隨之興起,各種各樣的網絡游戲、娛樂軟件像雨后春筍一樣以不斷更新的方式進入我們的生活,豐富了我們的業余時間。這些游戲能在不同的操作平臺上進行安裝,且其安裝、操作簡單適合每一位玩家,讓所有的玩家都能暢玩一番。然而在所有的操作系統中,Android系統無疑不是其首選的。在Android平臺上發布的酷狗、酷我、百度影音等等播放器,以其簡單快捷的操作,好看的畫面,舒適的結構,強大的功能所折服我們。本文通過Android技術的研究,實現了自主設計的一款音樂播放器,完成了本地音樂的加載、最近音樂播放的加載、正在播放頁面的實現、上一曲、下一曲、暫停、播放、繼續播放、進度條、時間顯示等等這些功能。本款音樂播放器采用TabHost進行總框架的布局,其他部分則采用相應的布局方式,使這款播放器看上去豐富,形象點。同時這款播放器操作簡單、實用、結合了Android課中所學到的很多知識,即對知識的一個總結。本音樂播放器的設計遵循企業軟件的工程思想,開始模擬了客戶來公司洽談某項業務,完成需求分析、界面設計、編寫代碼、進一步社交、產品的維護、用戶需求。這一系列的流程來一步步的制作這款播放器。關鍵字:Android、播放器、客戶、操作、流程Abstract:Digital

erain

twenty-firstCentury,

network

developmentisvery

rapid,

intoday's

stressfulsociety,

alongwiththeriseof

various

kindsof

entertainment,

networkgame,entertainmentsoftware

like

bambooshootsafteraspringrain

as

tocontinuouslyupdatethe

wayintoour

lives,enrichour

sparetime.

These

gamescanbe

installedindifferent

operating

platform,

and

itsinstallation,

operationissimpleand

suitableforevery

gameplayer,

letallthegameplayer

can

play

a.However,

alloftheoperatingsystem,

theAndroid

systemis

not

the

preferred.

PublishedintheAndroid

platformonthe

cooldog,

cool,

andsoon

Baidu

video

player,

withitssimpleandquick

operation,

beautifulpictures,

comfortablestructure,

powerfulfunction

by

us.

Inthispaper,

throughthe

researchofAndroidtechnology,

realizesanindependentdesignand

musicplayer,

the

localmusicloading,

recently

playingmusic,

playing

loading

pagerealization,

asong,

thenextsong,

play,

pause,

continuetoplay,

aprogressbar,

timedisplay

andsoonthesefunctions.

The

musicplayer

usingTabHost

frame

layout,theother

partis

the

correspondingarrangementway,make

theplayer

look

rich,

image

point.

Atthesametime,theplayer

hastheadvantagesofsimpleoperation,practical,

combinedwithalotof

knowledge

learned

inAndroid

class,

or

asummaryof

knowledge.

Thedesignofthe

musicplayer

followsthebusiness

softwareengineeringthought,

begantosimulate

the

customerstothecompanytodiscuss

somebusiness,

completetherequirementanalysis,

interfacedesign,

code,

furthersocial,

productmaintenance,

userdemand.

Thisaseriesofthe

process

stepbystep,

making

theplayer.KeyWords:Android、Player、Customer、Operation、Process目錄 第1章緒論 5 1.1Android簡介及其開發背景 5 1.2本課題內容的概述 6 1.3本課題的目的及意義 7 第2章開發工具的簡介 7 2.1什么是Eclipse? 7 2.2JDK的下載與安裝 9 2.3Eclipse的下載與安裝 13 2.4Eclipse中AndroidSDK插件的下載與安裝 14 第3章Android的基本結構 19 3.1Android的基本框架 19 3.2Android系統的四大組件 21 3.3Android音樂播放器的詳細設計思想 22 第4章本系統內容需求 23 4.1實現的內容需求 23 4.2播放器實現的目標 24 4.3播放器的基本控制需求 24 4.4功能需求分析 25 第5章Android的項目介紹 27 5.1本地音樂列表界面 27 5.2正在播放界面 29 5.3退出播放器界面 32 5.4AndroidManifest.xml文件介紹 33 第6章Android模擬器讀取SD卡中音頻文件的實現 33 6.1怎樣在模擬器中添加音頻文件并讀取 33 6.2SD卡的創建 34 6.3向SD卡里面上傳文件 34 6.4手機SD卡音頻文件讀取的代碼 34 第7章軟件測試 34 7.1軟件測試環境 34 7.2測試階段 34 7.3測試要點和總結 35 7.4測試結果 35 結束語 36 參考文獻 37 致謝 37第1章緒論1.1Android簡介及其開發背景Android一詞的本意是指“機器人”,同時也是Goolge與2007年11月Android是谷歌與2007年公布的開放式源碼手機系統,他的開放性就優于其他封閉式的手機系統,因此,任何人都可能根據自己的喜好將手機系統中的所有功能重新編寫。這使得越來越多的人關注這個系統。本次作品音樂播放器就是基于Android平臺的。Android是基于Linux內核的軟件平臺和操作系統,早期由Google開發,后由開放手機聯盟開發。它采用了軟件堆層(softwarestack,又名為軟件堆層)的架構,主要分為三部分。底層以Linux內核工作為基礎,只提供基本功能;其他的應用軟件則由各公司自行開發,以java作為編寫程序的一部分。另外,為了推廣此技術,Google和其他幾十個手機公司建立了開放手機聯盟。Android在未公開之前常被傳聞為Google電話或gPhone。大多的傳聞認為Google開發的是自己的手機電話產品,而不是一套軟件平臺。到了2010年1月,Google開始發表自家品牌手機電話的NexusOne。目前最新的SDK版本為Android4.4。硬件產品的發展趨勢手機在手機產品領域,Android手機可以說是類型最為豐富的,同時往往集成了最尖端的技術力。在2014年,更大尺寸、2k分辨率屏幕將成為高端配置,vivo品牌已經推出了首款2k屏幕機型。64位處理器及4GBRAM,也將成為高端手機的標配,此外,攝像頭也將繼續高像素化。平板電腦在2013年,Android在平板領域的成績斐然,甚至搶奪了蘋果ipad的市場份額。雖然這與Android低價平板的增多不無關系,在2014年仍將保持占有率的優勢。總結顯然,Android在2014年或許不會發生巨大的變化,包括市場份額以及產品形態。從積極的方面來看,新興市場的發力、新型設備的流行,會讓Android擁有更多的用武之地,與三星的關系修復,也有利于谷歌提供更為健康的生態系統。所以,我們還是十分期待在2014年的GoolgeI/O大會上,會看到谷歌更多的大動作。1.2本課題內容的概述進入互聯網的信息時代,手機市場越發迅猛的發展,各種音頻視頻資源也在網上廣為流傳,這些資源看似平常,但已經漸漸成為人們生活中必不可少的一部分了。于是各種手機播放器也緊跟著發展起來,但是很多播放器一味的追求外觀花哨,功能的齊全,對用戶的手機造成了很多資源的浪費,比如CPU,內存等占用率過高,會導致一些低端手機卡機、死機等情況的出現。隨著用戶的要求,播放器的功能越來越齊全,如:聽歌、看MV等等,除了能播放常見格式的語言視頻文件之外,還要滿足RMVB格式的視頻文件。此外,還需支持中文、英文、韓文、日文等語言界面。因此,基于Android的手機操作系統上的各種應用軟件應運而生,其音樂播放器無疑不是一個最成功的案例。如:酷狗、酷我、QQ音樂等播放器深受廣大用戶的喜愛,所以,各高校都會把播放器作為一個很好的教案,不僅讓我們了解了播放器是如何編寫成功的,更重要的是將我們與這個新興行業緊密的聯系在一起了。學以致用,將書本上的知識歸納、總結后寫一個成功的小項目,讓自己獲得更多、更牢固的專業知識,同時也為今后找工作打下不錯的基礎。對于這次的畢業選題,其難度、完整度、完善度都比以往在學校寫過寫過的任何一個小項目難得多,但卻是對我們一個很好的鍛煉機會,使自己的能力進一步升華,同時也給自己在大學里所有的知識做了一個總結,為自己的大學時代畫上一個圓滿的句號。1.3本課題的目的及意義本次作品就是基于Android平臺下的音樂播放器,對于此次的項目,我們必須首先了解Android平臺下軟件開發的相關知識,及軟件開發的意義。由于本次的畢業項目屬于個人的開發項目,不存在經濟實用性的考量,所以有很多的方面完善的不是很全,但是作為畢業項目而言,的確是一個很大的挑戰,不僅鍛煉了自己的能力,而且讓自己所學的知識得到運用,同時也是對自己在大學所學知識的一個總結,并且可以檢測自己的實力,總之,本次畢業論文的撰寫對我們益處扉多。第2章開發工具的簡介2.1什么是Eclipse?1.簡介Eclipse是一個開放源代碼的、基于Java的可擴展開發平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發環境。幸運的是,Eclipse附帶了一個標準的插件集,包括Java開發工具(JavaDevelopmentKit,JDK)。雖然大多數用戶很樂于將Eclipse當作Java集成開發環境(IDE)來使用,但Eclipse的目標卻不僅限于此。Eclipse還包括插件開發環境(Plug-inDevelopmentEnvironment,PDE),這個組件主要針對希望擴展Eclipse的軟件開發人員,因為它允許他們構建與Eclipse環境無縫集成的工具。由于Eclipse中的每樣東西都是插件,對于給Eclipse提供插件,以及給用戶提供一致和統一的集成開發環境而言,所有工具開發人員都具有同等的發揮場所。這種平等和一致性并不僅限于Java開發工具。盡管Eclipse是使用Java語言開發的,但它的用途并不限于Java語言;例如,支持諸如C/C++和COBOL等編程語言的插件已經可用,或預計將會推出。Eclipse框架還可用來作為與軟件開發無關的其他應用程序類型的基礎,比如內容管理系統。2.發行版本從2006年起,Eclipse基金會每年都會安排同步發布(simultaneousrelease)。至今,同步發布主要在6月進行,并且會在接下來的9月及2月釋放出SR1及SR2版本。3.語言拓展Eclipse是著名的跨平臺的自由集成開發環境(IDE)。最初主要用來Java語言開發,但是目前亦有人通過插件使其作為其他計算機語言比如C++和Python的開發工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發商以Eclipse為框架開發自己的IDE。Eclipse最初由OTI和IBM兩家公司的IDE產品開發組創建,起始于1999年4月。IBM提供了最初的Eclipse代碼基礎,包括Platform、JDT和PDE。目前由IBM牽頭,圍繞著Eclipse項目已經發展成為了一個龐大的Eclipse聯盟。Eclipse是一個開發源碼項目,由于其開放源碼,任何人都可以免費得到,并可以在此基礎上開發各自的插件,因此越來越受人們關注。近期還有包括Oracle在內的許多大公司也紛紛加入了該項目,并宣稱Eclipse將來能成為可進行任何語言開發的IDE集大成者,使用者只需下載各種語言的插件即可。4.插件開發環境Eclipse的插件機制是輕型軟件組件化架構。Eclipse使用插件來提供所有的附加功能,例如支持Java以外的其他語言。已有的分離的插件已經能夠支持C/C++(CDT)、Perl、Ruby,Python、telnet和數據庫開發。插件架構能夠支持將任意的擴展加入到現有環境中,例如配置管理,而決不僅僅限于支持各種編程語言。5.主要組成Eclipse是一個開放源代碼的軟件開發項目,專注于為高度集成的工具開發提供一個全功能的、具有商業品質的工業平臺。它主要由Eclipse項目、Eclipse工具項目和Eclipse技術項目三個項目組成,具體包括四個部分組成—Eclipse、Platform、JDT、CDT和PDE。JDT支持Java開發、CDT支持C開發、PDE用來支持插件開發,EclipsePlatform則是一個開放的可擴展IDE,提供了一個通用的開發平臺。它提供建造塊和構造并運行集成軟件開發工具的基礎。EclipsePlatform允許工具建造者獨立開發與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結束,而另一個工具功能在哪里開始。6.EclipseSDKEclipseSDK(軟件開發者包)是EclipsePlatform、JDT和PDE所生產的組件合并,它們可以一次下載。這些部分在一起提供了一個具有豐富特性的開發環境,允許開發者有效地建造可以無縫集成到EclipsePlatform中的工具。EclipseSDK由Eclipse項目生產的工具和來自其它開放源代碼的第三方軟件組合而成。Eclipse項目生產的軟件以GPL發布,第三方組件有各自自身的許可協議。2.2JDK的下載與安裝1、JDK的介紹JDK是Java開發者工具包,也稱J2SDK,是SUM公司提供的基礎Java語言開發工具,該工具軟件包含Java語言的編譯工具、運行工具以及執行程序的環境(JRE)。JDK現在是一個開源、免費的工具。JDK是其他Java開發工具的基礎,也就是說,在安裝其它開發工具之前,必須首先安裝JDK。2、JDK的下載現在最新的JDK版本為JDK1.7,JDK的最新版本的下載地址為:/technetwork/java/javase/downloads/jdk-7u4-downloads-1591156.html3、JDK的安裝在下載好的JDK雙擊進行一步一步的安裝即可,之后進行另一項工作,即:環境變量的配置。4、環境配置圖解過程4.1右擊“我的電腦”,選擇屬性4.2選擇“高級系統設置”4.3選擇“高級”選項卡中的“環境變量”4.4在系統環境里點擊“新建”,之后在“新建系統變量”里輸入如下內容,在點擊“確定”。4.5Path系統的變量設置,在系統變量里找到“Path”,之后點擊“編輯”,進入“編輯系統變量”,編輯“變量值”,完成后點擊“確定”。4.6classpath系統變量值的設置,由于JDK是1.7最高版本的,所以當JDK高于1.6版本時就不需要設置classpath的系統變量值了。5、JDK1.7安裝的最后檢查若想確定JDK是否安裝成功,可以在cmd運行環境里查看,即JDK安裝成功時的狀態為:2.3Eclipse的下載與安裝1.Eclipse的下載JDK環境配置成功后,接下來就是要把Java開發工具給安裝起來,即Eclipse的下載網址為:http:///downloads/進入后打開如下的網頁:根據自己的學習要求下載合適的版本,我這里下載的是第一個中的Windows32Bit。然后再點擊那個下載按鈕開始下載就可以了,下載下來的是一個壓縮包。將該壓縮包解壓到一個自定義的文件夾中,之后打開eclipse文件夾中的eclipse.exe,就能打開eclipse軟件。2.4Eclipse中AndroidSDK插件的下載與安裝1、AndroidSDK的介紹SDK:軟件開發工具包。被軟件開發工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統等建立應用軟件的開發工具的集合。因此,AndroidSDK指的是Android專屬的軟件開發工具包。2、AndroidSDK的下載AndroidSDK的下載網址為:http:///android/android-sdk_r04-windows.zip下載后解壓文件。3、AndroidSDK的安裝AndroidSDK不用安裝,下載后,直接解壓即可,將下載后的SDK的壓縮包解壓到適當的位置,SDK就安裝成功。使用Eclipse進行Android應用開發需要給Eclipse安裝ADT插件,這樣Eclipse就可以和AndroidSDK建立連接了,可以在Eclipse中啟動Android模擬器進行程序調試等ADT插件安裝,但必須先下載adt的zip安裝包,安裝插件后,需要做如下的配置即可:3.1、在Eclipse中,選擇Window>Preference;3.2、從左側的菜單中,選擇Android項;3.4、設置SDKLocation,點Browse選擇SDK的安裝根目錄;3.5、點apply后再點ok,即安裝完成。4、安裝Eclipse的開發插件4.1、啟動Eclipse,選擇菜單Help>InstallNewSoftware出現如下界面:4.2、點擊Add按鈕,出現如下的界面:輸入網址/android/eclipse/(如果出錯就將https改成http)。名稱:Android(自定義)4.3、點擊OK出現如下的界面:按照操作,點擊Next,知道出現如下的界面:4.5、選擇“Iacceptthetermsofthe….”在點擊Next,進入安裝界面。4.6、安裝完成后,出現如下的界面:4.7、點擊Yes按鈕,重啟Eclipse后,再來配置androidsdk。4.7.1、點擊菜單Window->preferences,進入一下界面:在Browse選擇你之前androidsdk解壓后的根目錄,如下:4.7.2、升級SDK版本,選擇菜單windows->Androidsdkandavdmanager:4.7.3、選擇Updateall按鈕,進入下面操作界面,再點擊左邊的Accept后點Install安裝:點擊Install后,進入下一個安裝界面進行安裝。4.7.5、安裝完成。4.7.6、新建AVD,步驟和上面一樣,進入AndroidSDKandAVDManager后一步一步的進行設置就OK了。創建完AVD之后,我們就可以在Eclipse里面新建Android的項目了。新建Android第3章Android的基本結構3.1Android的基本框架Android平臺的基本框架如下圖所示:Android分為四個層,從高層到底層分別是:程序應用層、應用程序框架層、系統運行庫層和linux核心層。藍色的代表java程序,黃色的代碼為運行Java程序而實現的虛擬機,綠色部分為C/C++的程序庫組成,通過JNI完成從Java到C的調用。應用程序所有的應用程序都是使用JAVA語言編寫的,每一個應用程序由一個或者多個活動組成,活動必須以Activity類為超類,活動類似于操作系統上的進程,但是活動比操作系統的進程要更為的靈活,與進程類似的是,活動在多種狀態之間進行切換。應用程序框架應用程序的架構設計簡化了組建的重用;任何一個應用程序都可以發布它的功能塊并且任何其他的應用程序都可以使用其發布的功能塊,幫助程序員快速的開發程序,并且應用程序重用機制也使用戶可以方便的替換程序組件。隱藏在每個應用后面的是一系列的服務和系統,其中包括入下:豐富而又可擴展的視圖,可以用來構建應用程序,包括:lists、grids、textboxes、buttons,甚至可嵌入的web瀏覽器。內容提供器使得應用程序可以訪問另一個應用程序的數據,或者共享他們自己的數據。資源管理器提供非代碼資源的訪問,如本地字符串、圖形、布局文件。通知管理器使得應用程序可以在狀態欄中顯示自定義的提示信息。活動管理器用來管理應用程序生命周期并提供常用的導航回退功能。系統運行庫程序庫Android包含一些C/C++庫,這些庫能被Android系統中不同的組件使用。它們通過Android應用程序框架為開發者提供服務。如下為核心庫:Bionic系統C庫媒體庫,基于PacketVideoOpenCORESurfaceManager顧名思義,用于管理SurfaceWebkit,LibWebCore瀏覽器,基于Webkit引擎SGL底層的2D圖形引擎3Dlibraries基于OpenGLES1.0APIs實現FreeType位圖和矢量字體顯示SOLite一個對于所有應用程序可用,功能強勁的輕型關系型數據庫引擎Android運行庫Android包含一個核心庫,該核心庫提供了JAVA編程語言核心庫的大多數功能。每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik被設計成一個設備可以同時高效的運行多個虛擬系統。Dalvik虛擬機執行的Dalvik可執行文件,該格式文件針對小內存使用做了優化,Dalvik虛擬機依賴于linux內核的一些功能,比如線程機制和底層內存管理機制。Linux內核Android的核心系統服務依賴于Linux2.6內核,如安全性、內存管理、進程管理、網絡協議棧和驅動模型。3.2Android系統的四大組件Activity應用程序中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些空間也可以監聽并處理用戶的事件作出響應。Activity之間通過Intent進行通信,在Intent的描述結構中,有兩個最重要的部分:動作和動作對應的數據。ServiceService沒有用戶界面,但他會在后臺一直運行,例如:service可能在用戶處理其它事情的時候播放背景音樂,或者從網絡上獲取數據,或者執行一些運算,并把運算結構提供給activity展示給用戶。每個service都擴展自類service。多媒體音樂播放器就是一個很好地例子,多媒體播放器程序可能含有一個或者多個Activity,用戶通過這些activity選擇并播放音樂。然而,音樂回放并不需要一個activity來處理,因為用戶可能希望音樂一直播放下去,即使退出播放器去執行其他程序,所以多媒體播放器activity可能會啟動一個service在后臺播放音樂,Android系統會使音樂回放service一直運行,即使再啟動這個service的activity退出之后。BroadcasereceiverBroadcasereceiver不執行任何任務,僅僅是接受并響應廣播通知的一類組件。大部分廣播通知是由系統產生的,例如:改變時區、電池電量低、用戶選擇了一幅圖片或者用戶改變了語言首選項,應用程序同樣也可以發送廣播通知,一個應用程序可以包含任意數量的Broadcasereceiver來響應它認為很重要的通知,所有的Broadcasereceiver都擴展自類BroadcastReceiver。Contentprovider應用程序可以通過Contentprovider訪問其他應用程序的一些私有數據,這是Android提供的一種標準的共享數據的機制。共享的數據可以是存儲在文件系統中、SQLite數據庫中或其它的一些媒體庫中。Contentprovider擴展自ContentProvider類,通過實現此類的一組標準的接口可以使其它應用程序存取由它控制的數據。然而應用程序并不會直接調用ContentProvider中的方法,而是通過類ContentResolver。ContentResolver能夠與任何一個ContentProvider通信,它與ContentProvider合作管理進程間的通信。3.3Android音樂播放器的詳細設計思想說起音樂播放器大家都知道,手機、電腦上的播放器,無疑不是大家放松心情的一種選擇的娛樂方式。自從接觸android以來,對android抱有很大的興趣,就想著自己可不可以制作一款播放器呢,于是查找資料,研究設計一款屬于個人的音樂播放器。首先設計出播放器各界面的草圖,同時考慮要實現的功能(如:播放、暫停、繼續播放、上/下一曲、進度條、本地列表等等),及功能在界面的buff,設計完成后就是將該界面在eclipse中設計出來,再實現后臺代碼的編寫,最后通過系統化的測試,一步步的將播放器優化,知道播放器的正常使用。本次播放器主要有三個界面構成:1、本地音樂列表界面,2、最近播放列表界面,3、播放主界面。本地音樂界面讀取的是手機SD卡中所有的可播放的音頻文件,通過ListView列表來獲取,點擊列表中的任意一首歌曲,就會跳轉到播放的主界面中,同時獲取該歌曲的所有播放信息;最近列表記錄的是最近播放過的任意一首歌曲,點擊該列中的任意一首歌曲同樣會跳轉到播放的主界面中,并獲取該歌曲的相關信息;在當前播放的主界面中,可以任意的對當前歌曲進行暫停、繼續播放、上一首、下一首等操作。此款播放器實現的是最基本的播放原理,但沒有實現歌詞的顯示滾動,以及下載音樂的機制等等,作為一個項目實在存在很多的不足,但是確實一個自己獨立的項目,其作用也是不可小覷的,本次播放器的完成讓我更加的了解Android,了解程序,為我今后的工作帶來很大的幫助。第4章本系統內容需求4.1實現的內容需求本文主要實現的內容需求有以下的幾個方面:(1)讀取內存卡(SD)卡里面所有的音頻文件,并自動加入該音樂播放器中。(2)音樂的播放,包括上一首、下一首、暫停、播放、進度條、更新歌名、時間顯示、本地列表、最近播放列表(3)合理的設計音樂播放器的界面4.2播放器實現的目標本系統屬于客戶經常使用的音樂播放器。可以是作者更加的清楚該流程,本系統應達到的目標:軟件采用人機交互的方式,界面美觀友好,操作簡單、方便、富有個性化。能對音樂文件進行有效的管理。系統應最大限度的實現易維護性和易操作性。本系統使作者達到的目標:本系統利于作者對大學時期所學知識的歸納、總結。鍛煉了作者的應用性及項目的整體完成性,同時為以后找工作奠定了重要的基礎。讓作者更加的了解一款軟件從設計到完成這個工作流程,及途中遇到苦難該如何的解決。本系統再次拉近了與程序之間的關系,讓我們更加的了解這個行業,更加的了解這個互聯網軟件的時代。4.3播放器的基本控制需求根據本項目的要求,我們了解了該項目系統的基本需求,現在就從不同的角度來描述系統需求。并運用例圖來細致的分析下,從播放器的基本控制需要、播放列表管理需求、播放界面的友好設計這三部分來進行概括。下一首上一首繼續播放暫停播放用戶下一首上一首繼續播放暫停播放用戶圖1播放器的基本控制需求4.4功能需求分析從圖例分析圖可以看出播放器中信息發送和調用過程快捷方式按鈕主界面本地快捷方式按鈕主界面本地音樂界面正在播放界面面選擇歌曲播放最近播放列表界面本地音樂播放頁面正在播放發送參數調用后臺的serviceService播放、返回播放后臺Service第5章Android的項目介紹5.1本地音樂列表界面首頁是通過TabHost布局,分兩個標簽,即:“本地音樂”和“正在播放”列表,如下圖3所示,其布局代碼不附屬了;如下代碼實現的是首頁中本地列表歌曲的獲取方法:

關鍵代碼:musicListView.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<?>adap,Viewv,intposition,longarg3){ currentListItme=position; playMusic(MUSIC_PATH+mMusicList.get(position)); isRunning=true; Intentintent=newIntent(); intent.setClass(Mp3PlayerActivity.this,Zhengzai.class); Bundlebundle=newBundle(); bundle.putString("path",MUSIC_PATH+mMusicList.get(position).toString()); intindex=position; bundle.putString("musicTitle",mMusicList.get(position)); intent.putExtra("bundle",bundle); startActivity(intent); }});5.2正在播放界面關鍵代碼:正在播放mStartImageButton.setOnClickListener(newImageButton.OnClickListener(){ @Override publicvoidonClick(Viewarg0){ //TODOAuto-generatedmethodstub //Stringpath=MUSIC_PATH+mMusicList.get(currentListItme); if(!isRunning){ playMusic(path); //startSeekBarUpdate(); }else{ if(!isPause){ pause(path); }else{ continuePlay(path); } } } });下一首的監聽和實現mNextImageButton.setOnClickListener(newImageButton.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub nextMusic(); } });privatevoidnextMusic(){ if(++Mp3PlayerActivity.currentListItme>=Mp3PlayerActivity.mMusicList.size()){ Mp3PlayerActivity.currentListItme=0; } playMusic(MUSIC_PATH+Mp3PlayerActivity.mMusicList.get(Mp3PlayerActivity.currentListItme)); isPause=false; mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_pause_nor)); }上一首的監聽和實現mPreImageButton.setOnClickListener(newImageButton.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub FrontMusic(); } });privatevoidFrontMusic(){ if(--Mp3PlayerActivity.currentListItme<=0){ Mp3PlayerActivity.currentListItme=Mp3PlayerActivity.mMusicList.size()-1; } playMusic(MUSIC_PATH+Mp3PlayerActivity.mMusicList.get(Mp3PlayerActivity.currentListItme)); isPause=false; mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_pause_nor)); }音樂的暫停privatevoidpause(Stringpath){if(Mp3PlayerActivity.mMediaPlayer!=null&&Mp3PlayerActivity.mMediaPlayer.isPlaying()){ Mp3PlayerActivity.mMediaPlayer.pause();isPause=true;mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_play_nor));}}音樂繼續播放privatevoidcontinuePlay(Stringpath){ if(isPause){ Mp3PlayerActivity.mMediaPlayer.start(); isPause=false; mStartImageButton.setImageDrawable(getResources().getDrawable(R.drawable.bt_widget_pause_nor));}}5.3退出播放器界面退出播放器提示代碼:publicvoidshowExitDialog(){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("確定要退出嗎?"); builder.setNegativeButton("否",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ } }); builder.setPositiveButton("是",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ Mp3PlayerActivity.this.finish(); System.exit(0); } }); builder.setCancelable(false); builder.create().show();}5.4AndroidManifest.xml文件介紹Android系統的任何一個程序啟動都需要AndroidManifest.xml來啟動程序,任何一個新建的工程目錄都會自動生成一個AndroidManifest.xml文件,此配置文件是整個程序能夠正常運行的核心,它包含了AndroidSDK的版本,程序運行的默認Activity,當程序中的任何一個組件觸發事件后,系統都會自動的去AndroidManifest.xml中尋找標識來作出相應的操作。在AndroidManifest.xml中有一個根結點<users-sdk>,它是我們需要定義的ADT版本,當程序的任何一個組件要用到時,都必須在AndroidManifest.xml文件中聲明。四大組件要使用前都需要聲明。其中聲明provider是還需要聲明其授權authorities。每個組件里面好有很多的屬性,會根據程序的具體需要定義不同的屬性。過濾器inent-filter有兩種啟動方式來啟動界面。顯示方式:顯示方式是在代碼中直接啟動組件,啟動時會聲明Inent,在它的構造方法Intent中直接指定一個組件的名字,然后調用方法startIntent(intent)以啟動指定的組件。隱式方式:隱式方式是通過過濾器來過濾完成的,啟動的組件必須滿足action和category的條件才能夠啟動該組件。這些屬性是在AndroidManifest.xml文件中聲明的。兩種啟動方式都可以通過程序setAction和startActivity或配置文件兩種方式來實現組件的跳轉。第6章Android模擬器讀取SD卡中音頻文件的實現6.1怎樣在模擬器中添加音頻文件并讀取在Android模擬器中,初始時沒有sdcard的,為了存放音樂文件,需要自己創建sdcard,所以下面的介紹就是怎樣在模擬器中創建音頻文件及讀取。6.2SD卡的創建通過Android的Tools來創建sd卡并導入進來:打開dos,windows+R鍵打開。轉換到你的sdk安裝包的tools目錄下,如我的目錄如下:E:\android-sdk-windows\tools。創建sd卡。在命令行中輸入:mksdcard1024M,E:\androidsdcard\sdcard.img。在eclipse里面創建模擬器,并以該SD卡來創建。創建完成之后,啟動該模擬器。可以在AndroidSDKandAVDManager里面指定模擬器并啟動。同樣打開Eclipse的DDMS—FileExplorer查看sd卡是否安裝完成。6.3向SD卡里面上傳文件右邊兩個小手機按鈕就是傳輸文件的按鈕了,用它來實現文件的傳入和傳出了,向左的表示把手機里的文件導出,向右的表示把文件導入手機里面去。但是在這里很容易出現一些異常情況,在這里異常情況不一一講述了,把手機里面的文件導出,進入模擬器,其導出的音頻文件的名稱最好為英文,如果是中文名稱則很容易出現異常。導出后,啟動模擬器,在播放器中就可以將歌曲自動的導入播放列表中。6.4手機SD卡音頻文件讀取的代碼第7章軟件測試7.1軟件測試環境由于本次的軟件是個人的小項目,其測試的環境只能用自己的手機進行測試,打開eclipse連接手機,運行項目時會將程序默認的安裝在手機里,即我們可以在手機里進行每個功能點的測試,需注意的是,本次項目是Android平臺下的音樂播放器,所以測試的手機必須是Android系統的,且在Android2.1以上版本的,測試環境允許的條件下,接下來就是實際的測試操作了。7.2測試階段測試前期一個一個功能點的測試,即:單個模塊的測試。當寫好一個功能如:播放,測試需求為:1、播放的按鈕是否正常顯示,2、未播放的按鈕狀態(暫停)點擊后是否顯示為播放狀態,且能正常播放音樂,3、正在播放時點擊播放按鈕是否顯示為暫停狀態,且歌曲是否停止播放了,4、再次點擊暫停按鈕時是否顯示為播放狀態,且歌曲是否是接著上次的播放進度繼續播放的。測試流程為:按照測試的需求一步步的執行操作,如出現問題需及時的修改。測試結果為:測試完一個單個模塊功能時,其測試的結果需記錄下來,整理后統一的進行修復,直到問題解決完畢。測試中期與初期測試不同,該時期測試是在附屬的單個功能都完成的條件下進行的,相當于小模塊多個功能的整體測試。如:歌曲的播放、暫停、繼續播放、上一首、下一首的整個流程。測試需求為:1、本地列表中的任意歌曲是否都能點擊并跳轉到播放界面進行播放,2、對正在播放界面中播放的歌曲進行暫停、繼續播放、上一首、下一首是否正常運行,3、正在播放界面的歌按鈕狀態在不同操作下是否顯示正確。測試流程為:按照測試需求完成附屬模塊的整體測試,如中途出現問題應及時的修改。測試結果為:附屬模塊測試完畢時,須把測試結果記錄下來,整理后統一的進行修復,知道問題解決完畢。測試完畢此測試條件為所有功能基本完成,播放器整體成形,此時需進行更加系統的測試,以確保所有問題都解決掉。按照之前的需求,再進一步的對此播放器進行優化,更完善些。當測試完成后,該項目就是一個比較成功的項目了。7.3測試要點和總結每測試一個功能時,需要整理一個Excel文檔,記錄每一個功能的流程,按照模塊、測試項、前置條件、執行步驟、預期結果和測試結果進行詳細的記錄,記錄完整之后,總結一個測試文檔,總結測試的過程。測試報告是每個軟件測試所必須的,該報告清楚的記錄測試的流程及測試的結果,和存在的問題,及時的提醒我們要及時的修復。7.4測試結果本次的軟件測試,有好多的功能沒有實現。如:最近播放音樂的記錄該功能沒有實現,雖然后臺代碼編寫完成了,但是調試后的結果沒有反應,由于自己的能力不足,最終導致這方面目前仍沒有實現;下載音樂的功能、音樂歌詞的顯示等等功能都沒有做,只是單純的實現了播放、暫停、繼續播放、上/下一首、進度條顯示、本地音樂的加載等功能,雖然這款音樂播放器可以播放,但是該軟件實現的機制太少了,只能算上一個大一點的畢業作業,談不上項目,可是,對于這款播放器的編寫,本人花了很長的時間研究,由于學校的教學資源有限,我們只能找些資料、書籍和老師的幫助,才一步步的實現。本次的畢業設計完全是使用最基本的android知識來編寫的,這對我們在大學所學知識的概括有了一個非常好的總結,這些知識只夠我們入門,要想精通這門語言,我們是要努力的學習的,這款音樂播放器,對我們來講是一個比較大規模、完整的一次項目了,不論從設計的開始,還是到最后的完成,每一步的實現都是靠自己一點點來解決的。通過最后的測試,播放器不存在崩潰的情況,但是那些目前沒有實現的bug,在以后的時間里,我會一點一點的去完善它,讓這款播放器成為自己獨有的一款。隨著這次的畢業項目的完成,對自己的能力也有了一個充分的了解,這次的測試不僅是對我寫的軟件的測試,更是對我人生一次重要的測試,通過這次,我對今后有了一定的認識,希望自己能堅強的走下去。結束語通過這次的畢業設計,對Android手機平臺的音樂播放器軟件的開發,使我們更加清楚的了解播放器系統的整個流程。一款播放器的完成,絕對是要經過努力的設計、考量、編碼、測試來一步步的完成的,這款音樂播放器是由播放的主界面、播放列表、最近播放列表界面、本地音樂操作界面等這幾個核心部分組成的。設計這款音樂播放器,需把自己當成客戶,從客戶的角度來要求播放器應實現哪些功能和界面設計等等。這款音樂播放器應實現的最基本的功能:播放、暫停、繼續播放、上一首、下一首、讀取本地音樂列表等功能。此軟件所運用的平臺是現今最熱門的的Android系統,是一個開源的基于Linux系統的手機平臺。是以Java語言編寫的SQLite數據庫支持的SharePreference配置文件的組合方式進行數據管理。實現了音樂播放器的系統編程。本次的程序設計,采用的主要開發工具是Eclipse+Java語言支持,AndroidDevelopmentTool的插件和AndroidSDK2.1結合完成的。此程序的設計,讓我們對軟件的開發工具及其安裝的過程有足夠的了解,熟悉并掌握其運行的配置環境。對于這次的軟件開發,讓我明白了,一個項目的開始不能著急于要怎么寫代碼,首先應該對自己要寫的軟件做一個全面的了解、分析,要實現哪些方面,接下來把自己要實現的功能畫出來,組成一個界面,在播放器的界面草稿設計好后,在Eclipse中將其界面實現,接下來我們才致力于編寫后臺的代碼,對界面上的功能得以實現,之后對寫好的程序進行測試,最終將音樂播放器項目完成。此次的項目完成,途中查看了不少的文檔資料,以及老師、同學的幫助,總之,經過這次的Android項目的整體完成,使我對Android系統有了一定的了解,同時對Android系統上的開發流程及開發模式有了更深的了解,這對我今后的工作打下了良好的基礎。本次論文的撰寫,是在指導老師**的指導下完成的,在此,我要忠心的感謝老師對我的指導與關心,借此要說聲:老師您辛苦了!參考文獻[1]李剛,瘋狂Android講義(第2版),出版社:電子工業出版社2013[2]楊豐盛,Android技術內幕:系統卷,北京:機械工業出版社2011[3]彭征,廖和平,黃易祿,熊祥強.旅行社旅游信息系統研究[J].河南大學學報,2006.(3)[4]李江風.旅游信息系統概論[M].武漢:武漢大學出版社.2003.[5]畢廣吉,java程序設計實例教程[M],北京:冶金工業出版社2009[6]辛運帷、饒一梅、馬素霞,Java程序設計[M],北京:清華大學出版社2007[7]張海藩,軟件工程導論[M],北京:清華大學出版社2003[8]何玉潔,數據庫原理與應用[M],北京:機械工業出版社2007[9]網絡資料:參考播放功能和SD卡的資料[10]余志龍、鄭名杰、陳小鳳等,GoogleAndroidSDK開發范例大全(第二版),北京:人民郵電出版社2010致謝首先需要感謝的是我大學里所有的老師,沒有你們這三年的栽培、教育,就沒有今天的我,是你們無私的教育,豐富我的學識,每天耐心的給我們解答、指導,像朋友、家人一樣關心著我們。不僅在學習上,在生活上依然關照著我們,在此,我忠心的感謝你們。感謝答辯委員會全體老師在百忙之中對我的論文提出很多的寶貴建議,讓我的論文完善的更好,更充分。感謝我的室友,是你們陪伴了我整個大學時代,也是相處時間最長的,長時間的相處離不開你們對我的幫助、關懷,對于這次的畢業論文你們同樣給予我幫助,在此我深深的感謝你們,謝謝你們,有你們,我的大學沒有了孤單。最后需要感謝的是我本次論文的指導老師宋培培,在她的指導、建議支持下才完成的這次畢業論文。這次的論文撰寫,使我受益匪淺,讓我了解了一款軟件所完成的所有步驟,第一步要干什么、接下來要干什么、最后需要干什么,從最先的分析、到最后的設計完成,都是要經過深思熟慮的。面對這款軟件的定位,我需要從客戶的角度出發,以客戶客觀的角度來對這款軟件提出要求,滿足哪些實質性的問題,怎樣做會更好,更實際、實用。通過這一系列的考慮,不僅使我的思維能力得到提升,同時還能學到更多的專業性知識,了解企業對一款軟件開發的全過程需求和考量;不僅如此,對生活的態度也有一定的提升,面對問題,以一種積極向上、不斷進取、一絲不茍的態度,把生活當成學習,積極面對。

畢業設計(論文)原創性聲明和使用授權說明原創性聲明本人鄭重承諾:所呈交的畢業設計(論文),是我個人在指導教師的指導下進行的研究工作及取得的成果。盡我所知,除文中特別加以標注和致謝的地方外,不包含其他人或組織已經發表或公布過的研究成果,也不包含我為獲得及其它教育機構的學位或學歷而使用過的材料。對本研究提供過幫助和做出過貢獻的個人或集體,均已在文中作了明確的說明并表示了謝意。作者簽名:日期:指導教師簽名:日期:使用授權說明本人完全了解大學關于收集、保存、使用畢業設計(論文)的規定,即:按照學校要求提交畢業設計(論文)的印刷本和電子版本;學校有權保存畢業設計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務;學校可以采用影印、縮印、數字化或其它復制手段保存論文;在不以贏利為目的前提下,學校可以公布論文的部分或全部內容。作者簽名:日期:

學位論文原創性聲明本人鄭重聲明:所呈交的論文是本人在導師的指導下獨立進行研究所取得的研究成果。除了文中特別加以標注引用的內容外,本論文不包含任何其他個人或集體已經發表或撰寫的成果作品。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式標明。本人完全意識到本聲明的法律后果由本人承擔。作者簽名: 日期:年月日學位論文版權使用授權書本學位論文作者完全了解學校有關保留、使用學位論文的規定,同意學校保留并向國家有關部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權大學可以將本學位論文的全部或部分內容編入有關數據庫進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本學位論文。涉密論文按學校規定處理。作者簽名: 日期:年月日導師簽名:日期:年月日基于C8051F單片機直流電動機反饋控制系統的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現的供暖系統最佳啟停自校正(STR)調節器單片機控制的二級倒立擺系統的研究基于增強型51系列單片機的TCP/IP協議棧的實現基于單片機的蓄電池自動監測系統基于32位嵌入式單片機系統的圖像采集與處理技術的研究基于單片機的作物營養診斷專家系統的研究基于單片機的交流伺服電機運動控制系統研究與開發基于單片機的泵管內壁硬度測試儀的研制基于單片機的自動找平控制系統研究基于C8051F040單片機的嵌入式系統開發基于單片機的液壓動力系統狀態監測儀開發模糊Smith智能控制方法的研究及其單片機實現一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數控系統的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設計基于單片機控制的高速快走絲電火花線切割機床短循環走絲方式研究基于單片機的機電產品控制系統開發基于PIC單片機的智能手機充電器基于單片機的實時內核設計及其應用研究基于單片機的遠程抄表系統的設計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統單片機系統軟件構件開發的技術研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設計和應用基于單片機的光纖光柵解調儀的研制氣壓式線性摩擦焊機單片機控制系統的研制基于單片機的數字磁通門傳感器基于單片機的旋轉變壓器-數字轉換器的研究基于單片機的光纖Bragg光柵解調系統的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統設計Pico專用單片機核的可測性設計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現基于單片機的電液伺服控制系統用于單片機系統的MMC卡文件系統研制基于單片機的時控和計數系統性能優化的研究基于單片機和CPLD的粗光柵位移測量系統研究單片機控制的后備式方波UPSHYPERLINK"/detail.

溫馨提示

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

評論

0/150

提交評論