android平臺的音樂視頻播放器論文_第1頁
已閱讀1頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  畢 業(yè) 論 文(設計)</p><p><b>  摘 要</b></p><p>  Android是一種以Linux為基礎的開放源碼操作系統(tǒng),它包括操作系統(tǒng)、用戶界面和應用程序、移動電話所需的全部軟件,而且不存在任何以往阻礙移動產(chǎn)業(yè)的專有權障礙,Android主要使用于便攜設備,網(wǎng)絡中各種接口為廣大用戶、開發(fā)者提供了更優(yōu)的開發(fā)、使用環(huán)境

2、。</p><p>  本論文的音樂視頻播放器采用了Android開源系統(tǒng)技術,利用Java語言和Eclipse編輯工具編寫。同時給出了詳細的系統(tǒng)設計過程、部分界面圖及主要功能運行流程圖,該音樂播放器部分集播放、暫停、上一首、下一首、歌詞顯示、歌手照片等功能于一體,視頻播放器方面集播放、暫停、快進、快退于一體,性能良好,在Android系統(tǒng)中能獨立運行。該播放器還擁有對手機中多媒體文件的自動掃描功能、歌曲播放模式

3、設置。</p><p>  本播放器只限于應用層程序的探討,主要考慮運行效率及用戶體驗,不包含對底層多媒體文件解析的研究。</p><p>  關鍵詞:Android;開源系統(tǒng);linux;音樂播放;視頻播放</p><p><b>  Abstract</b></p><p><b>  目 錄<

4、/b></p><p>  AbstractIII</p><p><b>  第一章 緒論1</b></p><p>  1.1 課題的來源1</p><p>  1.2 課題的研究目的及意義1</p><p>  1.3 課題主要研究的問題2</p><p&

5、gt;  1.4 相關技術介紹與應用2</p><p>  1.41 MVC設計思想運用于Android開發(fā)2</p><p>  1.42 Android簡介2</p><p>  1.43 Android基本框架(Android Architecture)3</p><p>  1.44 Android四大組件5<

6、/p><p>  第二章 需求分析7</p><p>  2.1可行性分析7</p><p>  2.1.1 經(jīng)濟可行性7</p><p>  2.1.2 技術可行性7</p><p>  2.1.3 操作可行性7</p><p>  2.2 軟件功能分析7</p><

7、;p>  2.3 目標系統(tǒng)邏輯模型8</p><p>  2.3.1 系統(tǒng)運行環(huán)境8</p><p>  2.3.2 播放器的基本控制需求8</p><p>  2.3.3 播放清單列表管理需求10</p><p>  2.3.4 播放友好性需求12</p><p>  2.4 系統(tǒng)性能需求12<

8、;/p><p>  2.5 運行環(huán)境需求13</p><p>  第三章 概要設計14</p><p>  3.1 設計策略14</p><p>  3.2 系統(tǒng)結構設計14</p><p>  3.2.1 軟件總體結構14</p><p>  3.2.2 系統(tǒng)模塊劃分15</p&

9、gt;<p>  3.2.3 程序流程圖15</p><p>  3.3 數(shù)據(jù)庫及字段屬性設計(以音樂播放器為例)16</p><p>  3.3.1 數(shù)據(jù)庫結構16</p><p>  3.3.2數(shù)據(jù)庫連接18</p><p>  3.3.4數(shù)據(jù)庫更新18</p><p>  第四章 系統(tǒng)詳細

10、設計與實現(xiàn)19</p><p>  4.1 前臺功能模塊分析19</p><p>  4.1.1音樂相關界面設計19</p><p>  4.1.2視頻播放相關界面設計22</p><p>  4.2 后臺數(shù)據(jù)庫交互功能模塊分析24</p><p>  4.2.1數(shù)據(jù)庫連接24</p><

11、;p>  4.2.2數(shù)據(jù)庫操作24</p><p>  4.3 多媒體文件播放模塊分析25</p><p>  4.3.1音頻文件播放:25</p><p>  4.3.2視頻文件播放:27</p><p>  4.4系統(tǒng)時序圖28</p><p>  4.5系統(tǒng)特點29</p><

12、;p>  第五章 測試過程30</p><p>  5.1術語和縮寫詞30</p><p>  5.2測試環(huán)境30</p><p>  5.3測試結果31</p><p>  5.4播放器功能測試31</p><p><b>  結 論33</b></p>&

13、lt;p><b>  參考文獻34</b></p><p><b>  致 謝35</b></p><p><b>  附 錄36</b></p><p><b>  第一章 緒論</b></p><p><b>  1.1

14、 課題的來源</b></p><p>  Android是一種以Linux為基礎的開放源碼操作系統(tǒng),它包括操作系統(tǒng)、用戶界面和應用程序、移動電話所需的全部軟件,而且不存在任何以往阻礙移動產(chǎn)業(yè)的專有權障礙,Google通過和運營商、設備制造商、開發(fā)商和其他有關各方組成申城次的合作伙伴關系,Google與手機聯(lián)盟一起開發(fā)了Android,其中包括中國移動、中國聯(lián)通、HTC,摩托羅拉、高通、T-Mobile

15、、索尼愛立信等三十多家企業(yè)。希望借助建立標準化、開放式的移動電話軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。</p><p>  作為谷歌企業(yè)戰(zhàn)略的重要組成部分,Android將進一步推進“隨時隨地為每個人提供信息”這一企業(yè)目標的實現(xiàn)。全球為數(shù)眾多的移動電話用戶正使用基于Android的各種的移動設備,谷歌的目標是讓移動通訊不依賴于設備甚至平臺。出于這個目的,Android將補充。</p>&l

16、t;p>  現(xiàn)今社會生活緊張,而聽音樂、看電影是其中最好的舒緩壓力的方式之一,本項目的目的是開發(fā)一個可以播放主流音樂文件格式、基本視頻格式的播放器,實現(xiàn)的主要功能是播放Mp3,Wav多種格式的音樂文件,并且能夠控制播放3gp格式電影,兩種播放模式分別實現(xiàn)暫停,停止,上一曲,下一曲,播放列表和歌曲循環(huán)模式,界面簡明,操作簡單。 </p><p>  1.2 課題的研究目的及意義</p><

17、p>  通過研究了各種市場上流行的手機播放器,了解它們各自的插件及編碼方式,還有各的播放特別格式文件,分析各種編碼的優(yōu)缺點以及各種播放器本身存在的缺陷和特點,編寫出功能實用,使用方便快捷的播放器。目前已經(jīng)實現(xiàn)的功能有能播放常見音頻文件的功能,如MP3、WAV、3GP等,擁有播放菜單,能選擇播放清單,具備一般播放器的功能,如快進,快退等。音樂播放模式也比較完善,有單曲,順序,循環(huán),隨機播放等模式。</p><p&

18、gt;  本項目是一款基于Android手機平臺的音樂視頻播放器,使Android手機擁有個性的多媒體播放器,使手機顯得更生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設計者更加熟練Android的技術和其它在市場上的特點</p><p>  1.3 課題主要研究的問題</p><p>  目前在Android手機、平板電腦中,所使用的多

19、媒體播放工具大多是音樂視頻相分離,對于手機用戶來說不得不安裝兩種應用程序,浪費手持設備的資源并影響。因此有必要開發(fā)為Android用戶提供支持多種格式并支持音頻視頻播放的軟件,因此有以下幾個方面需要深入研究:</p><p>  從理論的角度判斷開發(fā)基于Android平臺的音樂視頻播放器是否可行?</p><p>  從實踐上,如何提高界面操作的正確性和友好性,如何分析程序邏輯的正確性?&

20、lt;/p><p>  當sd卡中包含大量視頻、音頻文件時,如何提高檢索效率?</p><p>  用戶數(shù)據(jù)與Android數(shù)據(jù)庫信息的交互如何解決?</p><p>  如何提高播放器在系統(tǒng)中的資源利用率?</p><p>  如何減少甚至刪除軟件自身數(shù)據(jù)庫而是用系統(tǒng)數(shù)據(jù)庫提高效率?</p><p>  1.4 相關技術

21、介紹與應用</p><p>  本次畢業(yè)設計中運用了目前主流的Android設計技術,使用傳統(tǒng)MVC開發(fā)模式。</p><p>  1.41 MVC設計思想運用于Android開發(fā)</p><p>  該設計模式是“Model-View-Controller”的縮寫,中文翻譯為“模型-視圖-控制器”。它由這三個部分組成Event、Controller、Model或

22、View。Event(事件)導致Controller改變Model或View,或者同時改變兩者。只要Controller改變了Models的數(shù)據(jù)或者屬性,所有依賴的View都會自動更新。類似的,只要Controller改變了View,View會從潛在的Model中獲取數(shù)據(jù)來刷新自己。</p><p>  而在Android軟件開發(fā)中,MVC設計思想依然可以使用并且在很大程度上提高代碼編寫效率以及執(zhí)行效率,Xml前

23、臺頁面以及資源文件即為View,Activity即為Controller,工具類即為Model。</p><p>  1.42 Android簡介</p><p>  Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,號稱是首個為移動終端打造的真正開放和完整的

24、移動軟件。</p><p>  Android是基于Linux內(nèi)核的軟件平臺和操作系統(tǒng),早期由Google開發(fā)(在華注冊商標名為“安致”),后由開放手機聯(lián)盟(Open Handset Alliance)開發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構,主要分為三部分。低層以Linux內(nèi)核工作為基礎,只提供基本功能;其他的應用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。另外,

25、為了推廣此技術,Google和其它幾十個手機公司建立了開放手機聯(lián)盟。Android在未公開之前常被傳聞為Google電話或gPhone。大多傳聞認為Google開發(fā)的是自己的手機電話產(chǎn)品,而不是一套軟件平臺。到了2010年1月,Google開始發(fā)表自家品牌手機電話的Nexus One。目前最新SDK版本為Android 4.0.3。</p><p>  1.43 Android基本框架(Android Arch

26、itecture)</p><p>  圖 2.1 Android Architecture</p><p>  Applications</p><p>  Application Android會同一個核心應用程序包一起發(fā)布,該應用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應用程序都是用JAVA編寫的。</p

27、><p>  Application FrameWork </p><p>  開發(fā)者完全可以訪問核心應用程序所使用的API框架。該應用程序架構用來簡化組件軟件的重用;任何一個應用程序都可以發(fā)布它的功能塊并且任何其它的應用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性限制)。該應用程序重用機制使得組建可以被用戶替換。</p><p>  所有的應用程序都由一系列

28、的服務和系統(tǒng)組成,包括:</p><p>  ? 可擴展的視圖(Views )可以用來建應用程序,包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons),甚至包括一個可嵌入的web瀏覽器</p><p>  ?內(nèi)容管理器(Content Providers )使得應用程序可以訪問另一個應用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù)。&l

29、t;/p><p>  ?資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字符串,圖形,和分層文件(layout files )。</p><p>  ?通知管理器(Notification Manager)使得應用程序可以在狀態(tài)欄中顯示客戶通知信息。</p><p>  ?活動類管理器(Activity Manager)用來管理應用程序生命周期

30、并提供常用的導航回退功能。</p><p>  Libraries庫</p><p>  Android 包括一個被 Android 系統(tǒng)中各種不同組件所使用的 C/C++ 庫集。該庫通過 Android 應用程序框架為開發(fā)者提供服務。以下是一些主要的核心庫:</p><p>  系統(tǒng) C 庫- 一個從 BSD 繼承來的標準 C 系統(tǒng)函數(shù)庫( libc ),專門為基

31、于 embedded linux 的設備定制。 媒體庫- 基于 PacketVideo OpenCORE;該庫支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)印像文件包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。 Surface Manager - 對顯示子系統(tǒng)的管理,并且為多個應用程序提供2D和3D圖層的無縫融合。 LibWebCore - 一個最新的web瀏覽器引擎用來支持Android瀏覽器

32、和一個可嵌入的web視圖。 SGL - 一個內(nèi)置的2D圖形引擎 3D libraries - 基于OpenGL ES 1.0 APIs實現(xiàn);該庫可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。 FreeType - 位圖(bitmap)和向量(vector)字體顯示。 SQLite 一個對于所有應用程序可用,功能強勁的輕型關系型數(shù)據(jù)庫引擎。</p><p>  Android Runtime  &l

33、t;/p><p>  Android 包括了一個核心庫,該核心庫提供了JAVA編程語言核心庫的大多數(shù)功能。</p><p>  每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik是針對于同時高效地運行多個VMs來實現(xiàn)的。Dalvik虛擬機執(zhí)行.dex的Dalvik可執(zhí)行文件,該格式文件針對最小內(nèi)存使用做了優(yōu)化。該虛擬機是基于寄存器的,所有的

34、類都經(jīng)由JAVA匯編器編譯,然后通過SDK中的dx工具轉化成.dex格式由虛擬機執(zhí)行。</p><p>  Dalvik虛擬機依賴于linux的一些功能,比如線程機制和底層內(nèi)存管理機制。</p><p><b>  Linux內(nèi)核</b></p><p>  Android 的核心系統(tǒng)服務依賴于 Linux 2.6 內(nèi)核,如安全性,內(nèi)存管理,進

35、程管理,網(wǎng)絡協(xié)議棧和驅動模型。 Linux 內(nèi)核也同時作為硬件和軟件堆棧之間的硬件抽象層。未來發(fā)展 老牌智能手機軟件平臺制造商Symbian發(fā)言人則表示:Google的android只不過是另一個linux,symbian對其它軟件與其形成的競爭并不感到擔心。除了北美之外,Symbian在其它地區(qū)智能手機市場都占有大部分市場份額?!∨ciPhone相似,Android采用WebKit瀏覽器引擎,具備觸摸屏、高級圖形顯示和上網(wǎng)功能,用戶能夠

36、在手機上查看電子郵件、搜索網(wǎng)址和觀看視頻節(jié)目等,比iPhone等其他手機更強調(diào)搜索功能,界面更強大,可以說是一種融入全部Web應用的單一平臺?!?lt;/p><p>  但其最震撼人心之處在于Android手機系統(tǒng)的開放性和服務免費。Android是一個對第三方軟件完全開放的平臺,開發(fā)者在為其開發(fā)程序時擁有更大的自由度,突破了iPhone等只能添加為數(shù)不多的固定軟件的枷鎖;同時與Windows Mobile、Symb

37、ian等廠商不同,Android操作系統(tǒng)免費向開發(fā)人員提供,這樣可節(jié)省近三成成本?!ndroid項目目前正在從手機運營商、手機廠商、開發(fā)者和消費者那里獲得大力支持。谷歌移動平臺主管安迪?魯賓(Andy Rubin)表示,與軟件開發(fā)合作伙伴的密切接觸正在進行中。從去年11月開始,谷歌開始向服務提供商、芯片廠商和手機銷售商提供Android平臺,并組建“開放手機聯(lián)盟”,其成員超過30家。市場前景 Google手機于08年10月22日正式上

38、市,與運營商捆綁的合約價為179美元(約合人民幣1200元),現(xiàn)有的T-Mobile用戶可以通過網(wǎng)絡訂購。在10月22日發(fā)布當天,將有22個國家和地區(qū)可以買到谷歌手機。在11月,將增至27個國家和地區(qū)?!?lt;/p><p>  1.44 Android四大組件</p><p>  Android系統(tǒng)中,為我們提供了四大基本組件,每個組件是一個視圖,但是有些是可見的,有些是不可見的視圖,像A

39、ctivity,ContentProvider是可見的視圖,Service和BroadcastReceiver是不可見的,它們只在系統(tǒng)的后臺運行。下面分別介紹四大組件:</p><p>  Activity 簡介</p><p>  在Android系統(tǒng)中Activity提供可視化的用戶界面,一個Android應用通常由多個Activity組成。多個Activity組成了Activity棧

40、(Stack),當前活動的Activity處于棧頂。Activity有自己的生命周期,由Android系統(tǒng)來控制。</p><p>  Service 簡介</p><p>  顧名思義Service就是運行在后臺的一種服務程序,一般很少和用戶交互,因此沒有可視化界面定義一個Service類比較簡單,只要繼承Service類,實現(xiàn)其生命周期中的方法就可以了。一個定義好的Service必須在

41、AndroidManifest.xml配置文件注冊,通過<service>元素聲明才能使用.Service有自己的生命周期,我們可以調(diào)用startService()啟動一個Service或者bindService()方法來綁定一個存在的Service </p><p>  Broadcast Receiver 簡介</p><p>  Broadcast Receiver 顧名

42、思義廣播接收器,它和事件處理機制類似,只不過事件處理機制是程序組件級別的(例如,某個按鈕的單擊事件),而廣播事件處理機制是系統(tǒng)級別的。到目前為止我們可以使用Intent來啟動一個程序組件,我們還可以通過使用sendBroadcast()方法來發(fā)起一個系統(tǒng)級別的事件廣播來傳遞消息。我們可以在你的應用程序中實現(xiàn)Broadcast Receiver來監(jiān)聽和響應這些廣播的Intent </p><p>  Content

43、Provider簡介</p><p>  Content Provider 用來保存和檢索數(shù)據(jù),并且使應用程序之間相互訪問數(shù)據(jù)成為可能。它是跨應用程序共享數(shù)據(jù)的唯一方法。</p><p>  Android 為常用的數(shù)據(jù)類型(如:音視頻、圖片和聯(lián)系方式等)提供了大量的Content Provider。它們被定義在android.provider包下面。通過這樣定義好的ContentProv

44、ider 我們可以方便的進行數(shù)據(jù)操作。當然我們必須擁有適當?shù)臋嘞?。我們也可以自己來定ContentProvider共享我們的數(shù)據(jù),方便用戶的訪問。</p><p><b>  第二章 需求分析</b></p><p>  在任何軟件的開發(fā)過程中,需求分析都是十分重要的環(huán)節(jié)。對于Android開發(fā)來說也是如此,實踐表明,需求分析工作所做的程度,在很大程度上決定了軟件的成

45、敗。系統(tǒng)分析的任務是:通過問題識別、可行性分析、詳細調(diào)查、系統(tǒng)化分析、最終完成新系統(tǒng)的邏輯方案設計,或稱邏輯模型設計。邏輯方案解決“做什么”問題,是需求分析的任務。下面將就音樂視頻播放器是否可行來進行分析。</p><p><b>  2.1可行性分析</b></p><p>  可行性分析的任務是明確開發(fā)應用項目的必要性和可行性。必要性來自實現(xiàn)開發(fā)任務的迫切性,而可

46、行性則取決于實現(xiàn)應用系統(tǒng)的資源和條件。這項工作建立在前面初步調(diào)查的基礎上。</p><p>  2.1.1 經(jīng)濟可行性</p><p>  由于本次設計中所采用的開發(fā)工具均為開源產(chǎn)品,無費用需求;如軟件不發(fā)布則需要申請Android市場簽名權限20美金。所以本次開發(fā)不需要任何經(jīng)費支出。</p><p>  2.1.2 技術可行性</p><p&g

47、t;  對于Android操作系統(tǒng)來說,擁有自身完善的API,通過深入學習和研究,Android操作系統(tǒng)在多媒體文件播放方面有自身完善的數(shù)據(jù)庫,現(xiàn)行很多播放器采用自身去檢索SD卡的方式,而在本軟件的設想中,盡量減少軟件自身體積,調(diào)用系統(tǒng)數(shù)據(jù)庫,從Android API中可知是可行的,對于文件播放與多媒體文件支持方面,Android API也是可以做到的,所以從技術的角度分析,整合音樂、視頻播放于一身是可行的。</p>&l

48、t;p>  2.1.3 操作可行性</p><p>  本軟件的操作界面要做到簡潔、友好、功能全面,保證了用戶操作的人性化。對各類用戶的錯誤操作或異常情況應有提示或自動消除能力。</p><p>  2.2 軟件功能分析</p><p>  通過研究了各種市場上流行的手機播放器,了解它們各自的插件及編碼方式,還有各的播放特別格式文件,分析各種編碼的優(yōu)缺點以及各

49、種播放器本身存在的缺陷和特點,編寫出功能實用,使用方便快捷的播放器。目前已經(jīng)需要的功能有能播放常見音頻文件的功能,如MP3、WAV、3GP等,擁有播放菜單,能選擇播放清單,具備一般播放器的功能,如快進,快退等。音樂播放模式也比較完善,有單曲,順序,循環(huán),隨機播放等模式。</p><p>  2.3 目標系統(tǒng)邏輯模型</p><p>  邏輯模型是新系統(tǒng)開發(fā)中要采用的模型和信息處理方法。邏輯

50、方案是系統(tǒng)分析階段的最終成果,也是今后進行系統(tǒng)設計和實施的依據(jù)。</p><p>  2.3.1 系統(tǒng)運行環(huán)境</p><p>  開發(fā)環(huán)境:Eclipse 3.7+ADT 17.0.0</p><p>  運行環(huán)境:Android1.6- Android 2.2</p><p>  W2JJW-4KYDP-2YMKW-FX36H-QYVD8

51、 </p><p>  2.3.2 播放器的基本控制需求</p><p><b>  cc</b></p><p>  圖2.1 播放器基本控制圖</p><p><b>  需求用例表:</b></p><p>  2.3.3 播放清單列表管理需求</p&

52、gt;<p>  當用戶選中列表中某一項歌曲,就有的需求:</p><p>  圖2.2 播放器清單</p><p>  2.3.4 播放友好性需求</p><p>  圖2.3 播放器設定</p><p>  2.4 系統(tǒng)性能需求</p><p>  根據(jù)Android手機系統(tǒng)要求無響應時間為5秒,

53、所以就有如下性能要求:</p><p>  當要求歌曲播放時,程序響應時間最長不能超過5秒</p><p>  當要求歌曲暫停時,程序響應時間最長不能超過5秒</p><p>  當要求歌曲停止時,程序響應時間最長不能超過5秒</p><p>  當要求歌曲上/下一首時,程序響應時間最長不能超過5秒</p><p> 

54、 當要求進行清單列表時,程序響應時間最長不能超過5秒</p><p>  2.5 運行環(huán)境需求</p><p>  操作系統(tǒng):Android手機基于Linux操作系統(tǒng)</p><p>  支持環(huán)境:Android 1.5 – 2.2版本</p><p>  開發(fā)環(huán)境:Eclipse 3.7 ADT 17.0.0 </p><

55、;p><b>  第三章 概要設計</b></p><p><b>  3.1 設計策略 </b></p><p>  遵循軟件軟件工程原理及方法,采用如下設計策略。第一,模塊化策略。系統(tǒng)分兩大模塊:音樂播放模塊、視頻播放模塊和控制模塊。界面分為:列表頁面、播放頁面,因而為了保證系統(tǒng)整體結構和數(shù)據(jù)安全,也提高了模塊間的獨立性,減少藕合程度,

56、必須進行有效地系統(tǒng)分割。本系統(tǒng)將使用MVC思想編程,分離控制模塊。使制模塊得復用,數(shù)據(jù)庫方面使用系統(tǒng)Media數(shù)據(jù)庫中內(nèi)容,盡量減少自身數(shù)據(jù)量,減少軟件體積。</p><p>  3.2 系統(tǒng)結構設計</p><p>  在完成對系統(tǒng)的需求分析后,就可以有針對性的進行設計了。在本章中,主要針對該軟件的模塊劃分以及前、后臺功能模塊介紹,得出前、后臺功能結構圖;由前、后臺功能結構圖,得出本系統(tǒng)

57、的整體流程圖。在數(shù)據(jù)庫設計中,詳細介紹了如何調(diào)用并操作。</p><p>  3.2.1 軟件總體結構</p><p>  軟件功能分為兩大功能:音樂播放功能、視頻播放功能,音樂播放功能。需要實現(xiàn)的功能有能播放常見音頻文件的功能,如MP3、WAV、3GP等,擁有播放菜單,能選擇播放清單,具備一般播放器的功能,如快進,快退等。音樂播放模式包括單曲循環(huán),順序播放,隨機播放等模式。</p&

58、gt;<p>  3.2.2 系統(tǒng)模塊劃分</p><p>  圖3.1軟件功能哥結構圖</p><p><b>  功能描述如下:</b></p><p>  播放/暫停:通過播放按鍵實現(xiàn)暫?;虿シ鸥枨?。</p><p>  上一首/下一首:通過上一首、下一首按鍵實現(xiàn)歌曲切換。</p>&l

59、t;p>  歌詞:當一首歌曲正在播放時,自動尋找該歌曲的歌詞文件并解析,實時更新于播放界面。</p><p>  歌手圖片:當一首歌曲正在播放時,自動尋找該歌曲的歌手圖片,實時更新于播放界面。</p><p>  音樂列表:軟件開啟式第一個頁面。</p><p>  快進/快退:播放視頻時快進或快退15秒</p><p>  播放模式:

60、播放模式為一首歌曲播放結束后按照單曲循環(huán)或順序播放或隨機播放的方式播放西一首。</p><p>  更新列表:主動更新音樂或視頻列表</p><p><b>  列表管理:刪除歌曲</b></p><p>  3.2.3 程序流程圖</p><p>  綜合以上的模塊劃分以及各個模塊的功能分析,將本軟件的整體流程圖描述如

61、下:</p><p><b>  圖5-8系統(tǒng)流程圖</b></p><p>  由系統(tǒng)流程圖可以看出,本軟件一播放列表為主入口,在播放列表中可以對歌曲、視頻進行刪、改,當用戶點擊該頁的menu時可以選擇更新列表、跳至播放頁面的功能,當用戶單擊列表中某一條目式,本軟件自動清空目前正在播放隊列里的歌曲并播放用戶當前選中的歌曲或視頻,歌曲播放時同步更新歌詞,在歌曲播放頁面

62、可以選擇歌曲的播放模式。在試音、音樂的播放頁面中可以對當前播放的多媒體文件進行播放。再返回時,如果從視頻播放頁面返回播放列表頁面時停止視頻播放,如果從音樂播放頁面返回播放列表時歌曲轉為后臺播放。當從播放列表頁返回時提示用戶是否退出,點擊確定則結束程序</p><p>  3.3 數(shù)據(jù)庫及字段屬性設計(以音樂播放器為例)</p><p>  3.3.1 數(shù)據(jù)庫結構</p>&l

63、t;p>  數(shù)據(jù)結構組織和數(shù)據(jù)庫文件設計要根據(jù)不同用途,使用要求等,來決定數(shù)據(jù)的整體組織形式等一系列問題。</p><p>  數(shù)據(jù)庫,顧名思義,是存放數(shù)據(jù)的倉庫。只不過這個倉庫是在計算機存儲設備上,而且數(shù)據(jù)是按一定的格式存放的。數(shù)據(jù)庫中的數(shù)據(jù)按一定數(shù)據(jù)模型組織、描述和存儲,具有較小的重復度、較高的數(shù)據(jù)獨立性和易擴展性,并且可以被在一定范圍內(nèi)的各種用戶共享。在涉及數(shù)據(jù)庫的軟件開發(fā)中,需要根據(jù)有待解決的問題性

64、質(zhì)、規(guī)模,以及所采用的前端程序創(chuàng)建工具等,做出合適的數(shù)據(jù)庫類型選擇。</p><p>  file_table 主要是保存歌曲名字、類型、路徑等,字段說明:Id 歌曲id號 fileName 歌曲名字 filePath 歌曲路徑 sort 歌曲類型(表3.1、圖3.1.1)</p><p>  Android自帶一個MediaStore封閉類 專門來存儲媒體信息,通過Uri EXTERN

65、AL_CONTENT_URI 來訪問SDcard中的歌曲詳細信息。存放媒體信息如TITLE(標題)、ARTIST(藝術家)、ALBUM(專輯)、SIZE(大小 )(表3.2、圖3.1.2)</p><p><b>  表3.1</b></p><p><b>  表3.2</b></p><p><b>  圖3

66、.1 歌曲列表</b></p><p><b>  圖3.2 歌曲詳細</b></p><p>  3.3.2數(shù)據(jù)庫連接</p><p>  Android中自帶SQLite數(shù)據(jù)庫,這是一個十分小型的數(shù)據(jù)庫,這樣正適合Android這種移動平臺使用。</p><p>  Android數(shù)據(jù)庫存儲的位置在dat

67、a/data/<項目文件夾>/databases/目錄下 Android是利用ContentProvider作為內(nèi)容提供商,SQLiteOpenHelper數(shù)據(jù)庫幫助類來進行對數(shù)據(jù)庫的創(chuàng)建和操作。通過Context.getContentResolver()方法直接對數(shù)據(jù)庫進行操作。程序中數(shù)據(jù)庫類為DBHelper extends SQLiteOpenHelper(繼承關系),內(nèi)容提供類DBProvider exten

68、ds ContentProvider(繼承關系)Android自帶一個MediaStore封閉類 專門來存儲媒體信息,通過Uri EXTERNAL_CONTENT_URI 來訪問,獲得SDcard中的歌曲詳細信息。</p><p>  3.3.4數(shù)據(jù)庫更新</p><p>  當數(shù)據(jù)庫需更新時,比如添加歌曲或者刪除歌曲之后,Android系統(tǒng)并不會主動更新數(shù)據(jù)庫只有程序重啟或手機重啟時An

69、droid會更新Media數(shù)據(jù)庫,于是當進行了數(shù)據(jù)庫操作時就需要注冊廣播接收器通知系統(tǒng)更新數(shù)據(jù)庫這樣既可在進行相關文件增刪改查時同步更新數(shù)據(jù)庫。</p><p>  第四章 系統(tǒng)詳細設計與實現(xiàn)</p><p>  本軟件的設計時,已將劃分為多個模塊,并將它們按照一定的原則組裝起來,每個模塊完成一定的功能。詳細設計是軟件設計的第二階段,主要是實現(xiàn)每個模塊具體執(zhí)行的功能、詳細算法。詳細設計的完

70、成為編碼奠定了基礎,編碼是在詳細設計的基礎上進行的,它是將詳細設計得到的處理過程的描述轉換為基于某種計算機語言的程序。</p><p>  本章我們將對軟件的總體規(guī)劃和設計進行介紹,同時對難點穿插一些代碼。另外,對于本章我們將以模塊為單位來展開</p><p>  4.1 前臺功能模塊分析</p><p>  4.1.1音樂相關界面設計</p><

71、;p>  音樂視頻播放器的界面要給用戶第一體驗印象的界面,需要使用戶有興趣使用,在參考Android市場上多款播放器后設計為TabHost作為音樂和視頻的切換入口,使用略帶夢幻和漸變的背景圖片給用戶傳達放松、呼吸的感覺。TabHost轉載兩個Activity分別為音樂和視頻播放列表。列表均采用自定義的列表布局。</p><p>  綜合考慮,本系統(tǒng)登錄首頁采用上述設計模式進行設計和實現(xiàn)。如下圖:</p

72、><p>  圖4-1播放器主界面</p><p>  音樂播放列表的自定義樣式代碼如下:</p><p>  <style name="CustomListViewStyle"></p><p>  <!-- 設置透明背景色 --></p><p>  <item nam

73、e="android:cacheColorHint">@color/background_color</item></p><p>  <!-- 指定分割線顏色 --></p><p>  <item name="android:divider">@color/defaults</item><

74、;/p><p>  <!-- 指定分割線高度 --></p><p>  <item name="android:dividerHeight">1px</item></p><p>  <!-- 設置listSelector的顏色在數(shù)據(jù)的下面 --></p><p>  <

75、item name="android:drawSelectorOnTop">false</item></p><p>  <!-- 設置點擊選中顏色 --></p><p>  <item name="android:listSelector">@drawable/listview_background<

76、;/item></p><p>  <!-- 設置ListView默認背景色 --></p><p>  <item name="android:background">@android:color/transparent</item></p><p>  <!-- 設置ListView距左邊距距離

77、 --></p><p>  <item name="android:paddingLeft">0dip</item></p><p>  <!-- 設置ListView距右邊距距離 --></p><p>  <item name="android:paddingRight"&

78、gt;0dip</item></p><p>  <item name="android:paddingTop">3dip</item></p><p><b>  </style></b></p><p>  音樂播放界面的實現(xiàn)考慮的問題就比較多了,諸如:布局方式、按鍵觸發(fā)動

79、畫效果、透明效果、歌詞顯示變換方式等,最終由Android開發(fā)已不推薦使用的絕對布局轉為LinearLayout嵌套而成,各種按鍵素材均為反解市場上多款成熟播放器的.apk文件反解得到,并自定義seekbar樣式,Android自帶seekbar樣式為:</p><p>  圖4-2 原始seek樣式</p><p>  自定義樣式后seek變?yōu)椋?lt;/p><p>

80、  圖4-3 自定義seek樣式</p><p>  SeekBar樣式代碼如下:</p><p>  <?xml version="1.0" encoding="UTF-8"?></p><p>  <layer-list xmlns:android="http://schemas.android

81、.com/apk/res/android" ></p><p><b>  <item</b></p><p>  android:id="@android:id/background"</p><p>  android:drawable="@drawable/seek_bkg"/

82、></p><p>  <item android:id="@android:id/secondaryProgress"></p><p><b>  <clip></b></p><p><b>  <shape></b></p><p&g

83、t;  <corners android:radius="2.0dip" /></p><p><b>  <gradient</b></p><p>  android:angle="270.0"</p><p>  android:centerColor="#80ffb60

84、0"</p><p>  android:centerY="0.75"</p><p>  android:endColor="#a0ffcb00"</p><p>  android:startColor="#80ffd300" /></p><p><b&g

85、t;  </shape></b></p><p><b>  </clip></b></p><p><b>  </item></b></p><p>  <item android:id="@android:id/progress"><

86、;/p><p>  <clip android:drawable="@drawable/seek" /></p><p><b>  </item></b></p><p>  </layer-list></p><p>  Android的每一個可視化界面,都有其的唯

87、一的布局配置文件,該文件里面有各種布局方式,和各種資源文件如圖像,文字,顏色的引用,程序在運行時,可以通過代碼對各配置文件進行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個Activity,Android工程在每個activity啟動的時候會首先執(zhí)行Oncreate()方法,如下代碼:</p><p>  public void onCreate(Bundle savedInstanceSt

88、ate) {</p><p>  super.onCreate(savedInstanceState);</p><p>  this.requestWindowFeature(Window.FEATURE_NO_TITLE);</p><p>  setContentView(R.layout.musicplayer);</p><p>&

89、lt;b>  }</b></p><p>  最終,音樂正在播放頁面設計如圖:</p><p>  圖4-4音樂播放頁面首頁</p><p>  4.1.2視頻播放相關界面設計</p><p>  上述播放器主界面TabHost裝載兩個Activity分別為音樂和視頻播放列表。列表均采用自定義的列表布局。其中視頻播放列表如下

90、圖:</p><p>  圖4-5視頻播放列表頁</p><p>  因為在音樂播放頁面的介紹時介紹了樣式代碼,這里介紹實現(xiàn)列表的前臺xml文件內(nèi)容:</p><p>  <?xml version="1.0" encoding="utf-8"?></p><p>  <LinearL

91、ayout </p><p>  xmlns:android="http://schemas.android.com/apk/res/android"</p><p>  android:layout_height="fill_parent"</p><p>  android:layout_width="fill_

92、parent" </p><p>  android:orientation="vertical"</p><p>  android:background="@android:color/transparent" ></p><p>  <TextView </p><p>  

93、android:text="播放列表" </p><p>  android:layout_width="match_parent"</p><p>  android:layout_height="40dp"</p><p>  android:background="@drawable/tur

94、n_title_background"</p><p>  android:textSize="22dp"</p><p>  android:textColor="@color/text_shadow_color"</p><p>  android:gravity="bottom"</p

95、><p>  ></TextView></p><p>  <ListView </p><p>  android:id="@+id/movie_listview"</p><p>  android:layout_height="fill_parent" </p>

96、<p>  android:layout_width="fill_parent"</p><p>  android:cacheColorHint="#00000000" </p><p>  style="@style/CustomListViewStyle"</p><p>  ><

97、;/ListView></p><p>  </LinearLayout></p><p>  圖4-6視頻正在播放操作界面</p><p>  電影播放頁面的實現(xiàn)列表的前臺xml文件內(nèi)容:</p><p>  <?xml version="1.0" encoding="utf-8&quo

98、t;?></p><p>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_

99、height="fill_parent"</p><p>  android:background="@android:color/transparent"</p><p>  android:orientation="vertical" ></p><p>  <VideoView</p

100、><p>  android:id="@+id/videoView"</p><p>  android:layout_width="match_parent"</p><p>  android:layout_height="wrap_content" </p><p>  andro

101、id:layout_gravity="center"/></p><p>  </LinearLayout></p><p>  4.2 后臺數(shù)據(jù)庫交互功能模塊分析</p><p>  4.2.1數(shù)據(jù)庫連接</p><p>  Android中自帶SQLite數(shù)據(jù)庫,這是一個十分小型的數(shù)據(jù)庫,這樣正適合A

102、ndroid這種移動平臺使用。</p><p>  Android數(shù)據(jù)庫存儲的位置在data/data/<項目文件夾>/databases/目錄下 Android是利用ContentProvider作為內(nèi)容提供商,SQLiteOpenHelper數(shù)據(jù)庫幫助類來進行對數(shù)據(jù)庫的創(chuàng)建和操作。通過Context.getContentResolver()方法直接對數(shù)據(jù)庫進行操作。程序中數(shù)據(jù)庫類為DBHe

103、lper extends SQLiteOpenHelper(繼承關系),內(nèi)容提供類DBProvider extends ContentProvider(繼承關系)</p><p>  Android自帶一個MediaStore封閉類 專門來存儲媒體信息,通過Uri EXTERNAL_CONTENT_URI 來訪問,獲得SDcard中的歌曲詳細信息。</p><p>  Cursor mAu

104、dioCursor = getContentResolver().query(</p><p>  MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, // 查詢條件</p><p>  null, // 條件的對應?的參數(shù)</p><p>  MediaStore.Audio.AudioColumns.

105、TITLE// 排序方式</p><p><b>  );</b></p><p>  Cursor VudioCursor = getContentResolver().query(</p><p>  MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null, // 查詢條件</p

106、><p>  null, // 條件的對應?的參數(shù)</p><p>  MediaStore.Video.VideoColumns.TITLE// 排序方式</p><p><b>  );</b></p><p>  4.2.2數(shù)據(jù)庫操作</p><p>  當數(shù)據(jù)庫需更新時,比如添加歌曲或者刪除歌

107、曲之后,Android系統(tǒng)并不會主動更新數(shù)據(jù)庫只有程序重啟或手機重啟時Android會更新Media數(shù)據(jù)庫,于是當進行了數(shù)據(jù)庫操作時就需要通知系統(tǒng)更新數(shù)據(jù)庫方法如下:</p><p>  private void scanSdCard() {</p><p>  IntentFilter intentFilter = new IntentFilter(</p><p&g

108、t;  Intent.ACTION_MEDIA_SCANNER_STARTED);</p><p>  intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);</p><p>  intentFilter.addDataScheme("file");</p><p>  scan

109、Receiver = new ScanSdFilesReceiver();</p><p>  registerReceiver(scanReceiver, intentFilter);</p><p>  sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,</p><p>  Uri.parse("

110、file://"</p><p>  + Environment.getExternalStorageDirectory()</p><p>  .getAbsolutePath())));</p><p><b>  }</b></p><p><b>  并注冊廣播接收器:</b>&l

111、t;/p><p>  private class ScanSdFilesReceiver extends BroadcastReceiver {</p><p>  public void onReceive(Context context, Intent intent) {</p><p>  String action = intent.getAction();&l

112、t;/p><p>  if (Intent.ACTION_MEDIA_SCANNER_STARTED.equals(action)) {</p><p>  // 當系統(tǒng)開始掃描sd卡時,為了用戶體驗,可以加上一個等待框</p><p>  System.out.println("++---++---++---++");</p><

113、;p><b>  }</b></p><p>  if (Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action)) {</p><p>  // 當系統(tǒng)掃描完畢時,停止顯示等待框,并重新查詢ContentProvider</p><p>  movieListData.clear();<

114、;/p><p><b>  // 獲取歌曲</b></p><p>  getVideoSD();</p><p><b>  // 刷新列表</b></p><p>  refreashmovielist();</p><p>  myDialog.dismiss();<

115、/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  這樣既可在進行相關文件增刪改查時同步更新數(shù)據(jù)庫。</p><p>  4.3 多媒體文件播放模塊分析</p>

116、<p>  4.3.1音頻文件播放:</p><p>  MediaPlayer是Android封裝好的可以直接用來管理多媒體文件的工具類,可以使用直接new的方式:MediaPlayer mp = new MediaPlayer(); MediaPlayer要播放的文件主要包括3個來源:</p><p>  a. 用戶在應用中事先自帶的resource資源例如:MediaP

117、layer.create(this, R.raw.test);</p><p>  b. 存SD卡或其他文件路徑下的媒體文件例如:mp.setDataSource("/sdcard/test.mp3");</p><p>  c. 網(wǎng)絡上的媒體文件例如:mp.setDataSource("http://www.citynorth.cn/music/confuc

118、ius.mp3");</p><p>  對播放器的主要控制方法:</p><p>  Android通過控制播放器的狀態(tài)的方式來控制媒體文件的播放,其中:prepare()和prepareAsync() 提供了同步和異步兩種方式設置播放器進入prepare狀態(tài),需要注意的是start()是真正啟動文件播放的方法,pause()和stop()比較簡單,起到暫停和停止播放的作用,

119、seekTo()是定位方法,可以讓播放器從指定的位置開始播放,需要注意的是該方法是個異步方法,也就是說該方法返回時并不意味著定位完成,尤其是播放的網(wǎng)絡文件,真正定位完成時會觸發(fā)OnSeekComplete.onSeekComplete(),如果需要是可以調(diào)用setOnSeekCompleteListener(OnSeekCompleteListener)設置監(jiān)聽器來處理的。release()可以釋放播放器占用的資源,一旦確定不再使用播放

溫馨提示

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

評論

0/150

提交評論