2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

3、設(shè)置。</p><p>  本播放器只限于應(yīng)用層程序的探討,主要考慮運(yùn)行效率及用戶體驗,不包含對底層多媒體文件解析的研究。</p><p>  關(guān)鍵詞: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 相關(guān)技術(shù)介紹與應(yīng)用2</p><p>  1.41 MVC設(shè)計思想運(yùn)用于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)濟(jì)可行性7</p><p>  2.1.2 技術(shù)可行性7</p><p>  2.1.3 操作可行性7</p><p>  2.2 軟件功能分析7</p><

7、;p>  2.3 目標(biāo)系統(tǒng)邏輯模型8</p><p>  2.3.1 系統(tǒng)運(yùn)行環(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 運(yùn)行環(huán)境需求13</p><p>  第三章 概要設(shè)計14</p><p>  3.1 設(shè)計策略14</p><p>  3.2 系統(tǒng)結(jié)構(gòu)設(shè)計14</p><p>  3.2.1 軟件總體結(jié)構(gòu)14</p><p>  3.2.2 系統(tǒng)模塊劃分15</p&

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

10、設(shè)計與實現(xiàn)19</p><p>  4.1 前臺功能模塊分析19</p><p>  4.1.1音樂相關(guān)界面設(shè)計19</p><p>  4.1.2視頻播放相關(guān)界面設(shè)計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術(shù)語和縮寫詞30</p><p>  5.2測試環(huán)境30</p><p>  5.3測試結(jié)果31</p><p>  5.4播放器功能測試31</p><p><b>  結(jié) 論33</b></p>&

13、lt;p><b>  參考文獻(xiàn)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為基礎(chǔ)的開放源碼操作系統(tǒng),它包括操作系統(tǒng)、用戶界面和應(yīng)用程序、移動電話所需的全部軟件,而且不存在任何以往阻礙移動產(chǎn)業(yè)的專有權(quán)障礙,Google通過和運(yùn)營商、設(shè)備制造商、開發(fā)商和其他有關(guān)各方組成申城次的合作伙伴關(guān)系,Google與手機(jī)聯(lián)盟一起開發(fā)了Android,其中包括中國移動、中國聯(lián)通、HTC,摩托羅拉、高通、T-Mobile

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

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

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

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

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

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

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

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

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

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

25、為了推廣此技術(shù),Google和其它幾十個手機(jī)公司建立了開放手機(jī)聯(lián)盟。Android在未公開之前常被傳聞為Google電話或gPhone。大多傳聞?wù)J為Google開發(fā)的是自己的手機(jī)電話產(chǎn)品,而不是一套軟件平臺。到了2010年1月,Google開始發(fā)表自家品牌手機(jī)電話的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會同一個核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是用JAVA編寫的。</p

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

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

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

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

31、于 embedded linux 的設(shè)備定制。 媒體庫- 基于 PacketVideo OpenCORE;該庫支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)印像文件包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。 Surface Manager - 對顯示子系統(tǒng)的管理,并且為多個應(yī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 一個對于所有應(yīng)用程序可用,功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫引擎。</p><p>  Android Runtime  &l

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

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

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

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

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

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

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

40、(Stack),當(dāng)前活動的Activity處于棧頂。Activity有自己的生命周期,由Android系統(tǒng)來控制。</p><p>  Service 簡介</p><p>  顧名思義Service就是運(yùn)行在后臺的一種服務(wù)程序,一般很少和用戶交互,因此沒有可視化界面定義一個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、思義廣播接收器,它和事件處理機(jī)制類似,只不過事件處理機(jī)制是程序組件級別的(例如,某個按鈕的單擊事件),而廣播事件處理機(jī)制是系統(tǒng)級別的。到目前為止我們可以使用Intent來啟動一個程序組件,我們還可以通過使用sendBroadcast()方法來發(fā)起一個系統(tǒng)級別的事件廣播來傳遞消息。我們可以在你的應(yīng)用程序中實現(xiàn)Broadcast Receiver來監(jiān)聽和響應(yīng)這些廣播的Intent </p><p>  Content

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

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

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

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

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

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

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

50、方案是系統(tǒng)分析階段的最終成果,也是今后進(jìn)行系統(tǒng)設(shè)計和實施的依據(jù)。</p><p>  2.3.1 系統(tǒng)運(yùn)行環(huán)境</p><p>  開發(fā)環(huán)境:Eclipse 3.7+ADT 17.0.0</p><p>  運(yùn)行環(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>  當(dāng)用戶選中列表中某一項歌曲,就有的需求:</p><p>  圖2.2 播放器清單</p><p>  2.3.4 播放友好性需求</p><p>  圖2.3 播放器設(shè)定</p><p>  2.4 系統(tǒng)性能需求</p><p>  根據(jù)Android手機(jī)系統(tǒng)要求無響應(yīng)時間為5秒,

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

54、 當(dāng)要求進(jìn)行清單列表時,程序響應(yīng)時間最長不能超過5秒</p><p>  2.5 運(yùn)行環(huán)境需求</p><p>  操作系統(tǒng):Android手機(jī)基于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>  第三章 概要設(shè)計</b></p><p><b>  3.1 設(shè)計策略 </b></p><p>  遵循軟件軟件工程原理及方法,采用如下設(shè)計策略。第一,模塊化策略。系統(tǒng)分兩大模塊:音樂播放模塊、視頻播放模塊和控制模塊。界面分為:列表頁面、播放頁面,因而為了保證系統(tǒng)整體結(jié)構(gòu)和數(shù)據(jù)安全,也提高了模塊間的獨立性,減少藕合程度,

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

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

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

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

60、播放模式為一首歌曲播放結(jié)束后按照單曲循環(huán)或順序播放或隨機(jī)播放的方式播放西一首。</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)流程圖可以看出,本軟件一播放列表為主入口,在播放列表中可以對歌曲、視頻進(jìn)行刪、改,當(dāng)用戶點擊該頁的menu時可以選擇更新列表、跳至播放頁面的功能,當(dāng)用戶單擊列表中某一條目式,本軟件自動清空目前正在播放隊列里的歌曲并播放用戶當(dāng)前選中的歌曲或視頻,歌曲播放時同步更新歌詞,在歌曲播放頁面

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

63、t;p>  數(shù)據(jù)結(jié)構(gòu)組織和數(shù)據(jù)庫文件設(shè)計要根據(jù)不同用途,使用要求等,來決定數(shù)據(jù)的整體組織形式等一系列問題。</p><p>  數(shù)據(jù)庫,顧名思義,是存放數(shù)據(jù)的倉庫。只不過這個倉庫是在計算機(jī)存儲設(shè)備上,而且數(shù)據(jù)是按一定的格式存放的。數(shù)據(jù)庫中的數(shù)據(jù)按一定數(shù)據(jù)模型組織、描述和存儲,具有較小的重復(fù)度、較高的數(shù)據(jù)獨立性和易擴(kuò)展性,并且可以被在一定范圍內(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中的歌曲詳細(xì)信息。存放媒體信息如TITLE(標(biāo)題)、ARTIST(藝術(shù)家)、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 歌曲詳細(xì)</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ù)庫幫助類來進(jìn)行對數(shù)據(jù)庫的創(chuàng)建和操作。通過Context.getContentResolver()方法直接對數(shù)據(jù)庫進(jìn)行操作。程序中數(shù)據(jù)庫類為DBHelper extends SQLiteOpenHelper(繼承關(guān)系),內(nèi)容提供類DBProvider exten

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

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

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

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

72、><p>  圖4-1播放器主界面</p><p>  音樂播放列表的自定義樣式代碼如下:</p><p>  <style name="CustomListViewStyle"></p><p>  <!-- 設(shè)置透明背景色 --></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>  <!-- 設(shè)置listSelector的顏色在數(shù)據(jù)的下面 --></p><p>  <

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

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

77、 --></p><p>  <item name="android:paddingLeft">0dip</item></p><p>  <!-- 設(shè)置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ā)已不推薦使用的絕對布局轉(zhuǎn)為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、一的布局配置文件,該文件里面有各種布局方式,和各種資源文件如圖像,文字,顏色的引用,程序在運(yùn)行時,可以通過代碼對各配置文件進(jìn)行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個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>  最終,音樂正在播放頁面設(shè)計如圖:</p><p>  圖4-4音樂播放頁面首頁</p><p>  4.1.2視頻播放相關(guān)界面設(shè)計</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ù)庫幫助類來進(jìn)行對數(shù)據(jù)庫的創(chuàng)建和操作。通過Context.getContentResolver()方法直接對數(shù)據(jù)庫進(jìn)行操作。程序中數(shù)據(jù)庫類為DBHe

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

104、dioCursor = getContentResolver().query(</p><p>  MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, // 查詢條件</p><p>  null, // 條件的對應(yīng)?的參數(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, // 條件的對應(yīng)?的參數(shù)</p><p>  MediaStore.Video.VideoColumns.TITLE// 排序方式</p><p><b>  );</b></p><p>  4.2.2數(shù)據(jù)庫操作</p><p>  當(dāng)數(shù)據(jù)庫需更新時,比如添加歌曲或者刪除歌

107、曲之后,Android系統(tǒng)并不會主動更新數(shù)據(jù)庫只有程序重啟或手機(jī)重啟時Android會更新Media數(shù)據(jù)庫,于是當(dāng)進(jìn)行了數(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>  // 當(dāng)系統(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>  // 當(dāng)系統(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>  這樣既可在進(jìn)行相關(guān)文件增刪改查時同步更新數(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. 用戶在應(yīng)用中事先自帶的resource資源例如:MediaP

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

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

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

溫馨提示

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

評論

0/150

提交評論