基于android系統(tǒng)的音樂播放器的實現(xiàn)2_第1頁
已閱讀1頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  河北農業(yè)大學現(xiàn)代科技學院</p><p><b>  畢業(yè)論文</b></p><p>  題 目: 基于Android系統(tǒng)的音樂播放器的實現(xiàn) </p><p>  學 部: 工程技術學部 </p><

2、;p>  專業(yè)班級:計算機科學與技術0902班 </p><p>  學 號: 2009614070205 </p><p>  學生姓名: 楊歡 </p><p>  指導教師姓名: 陳晨 </p><p>  指導教師職稱: 講師

3、 </p><p>  二O一三 年 五 月 五 日</p><p><b>  摘 要</b></p><p>  當今社會的生活節(jié)奏越來越快,隨著硬件移動設備的越來越先進,人們對移動設備的要求也越來越高,從以前的追求技術到現(xiàn)在的追求視覺,因此,也逐步的提高了對系統(tǒng)的要求,本文主要是對Android系統(tǒng)上音

4、樂播放器應用程序的設計與實現(xiàn)進行討論。本論文的音樂播放器采用了Android開源系統(tǒng)技術,利用Java語言和Eclipse編輯工具對播放器進行編寫,同時給出了詳細的系統(tǒng)設計過程、部分界面圖及主要功能運行流程圖,本文還對開發(fā)過程中遇到的問題和解決方法進行了詳細的討論,該音樂播放器集播放、暫停、停止、上一首、下一首、音量調節(jié)、歌詞顯示等功能于一體,性能良好,在Android系統(tǒng)中能獨立運行。該播放器還擁有歌曲播放模式、以及歌詞開閉狀態(tài)的友好

5、設置。</p><p>  關鍵詞:Android,開源系統(tǒng),音樂播放器</p><p><b>  Abstract</b></p><p>  The pace of life in today's society, with more advanced hardware mobile devices for mobile devi

6、ces, people more and more is also high, the requirements from the previous pursuit to pursue the visual technology, therefore, also gradually improve the system requirements, the paper mainly is to take on a music player

7、 from system design and realization of the application is discussed. Take the system is an open source, it is based on the operating system, use the Linux music player of the Android op</p><p>  Key Words: A

8、ndroid, open source system, music player.</p><p><b>  目 錄</b></p><p><b>  1 引 言1</b></p><p>  1.1課題背景及意義1</p><p>  1.2 現(xiàn)行系統(tǒng)研究現(xiàn)狀1</p>

9、;<p>  1.3 實現(xiàn)的基本目標和研究內容2</p><p>  2 系統(tǒng)的需求及可行性分析3</p><p>  2.1 系統(tǒng)需求分析3</p><p>  2.1.1軟件目標3</p><p>  2.1.2系統(tǒng)界面需求3</p><p>  2.1.3系統(tǒng)功能需求3</p&g

10、t;<p>  2.1.4 系統(tǒng)性能需求3</p><p>  2.1.5 運行環(huán)境需求4</p><p>  2.2 系統(tǒng)可行性分析4</p><p>  2.2.1經濟上的可行性4</p><p>  2.2.2 技術上的可行性4</p><p>  2.2.3 操作上的可行性4</

11、p><p><b>  3 系統(tǒng)介紹5</b></p><p>  3.1 設計思想5</p><p>  3.2 系統(tǒng)功能結構圖5</p><p>  3.3 Android介紹5</p><p>  3.3.1 Android簡介5</p><p>  3.3.

12、2 Android Features 特性6</p><p>  3.3.3 Android 基本框架6</p><p>  3.3.4 Android 系統(tǒng)的四大組件8</p><p>  3.3.5 SQLite 簡介9</p><p>  3.4 Android音樂播放器的工程9</p><p>  3

13、.4.1 Android項目9</p><p>  3.4.2 Android 工程程序結構10</p><p>  3.4.3 AndroidManifest.xml文件11</p><p>  4 系統(tǒng)詳細設計13</p><p>  4.1 歡迎界面設計13</p><p>  4.2 播放列表功能

14、15</p><p>  4.3 設置界面的實現(xiàn)17</p><p>  4.4 歌曲播放界面18</p><p>  4.5 歌詞顯示設置20</p><p>  5 結 論22</p><p><b>  參考文獻23</b></p><p><

15、b>  致 謝24</b></p><p><b>  附錄25</b></p><p><b>  1 引 言</b></p><p>  1.1課題背景及意義</p><p>  隨著計算機的廣泛運用,手機市場的迅速發(fā)展,各種音頻視頻資源也在網上廣為流傳,這些資源看似平

16、常,但已經漸漸成為人們生活中必不可少的一部分了。于是各種手機播放器也緊跟著發(fā)展起來,但是很多播放器一味追求外觀花哨,功能龐大,對用戶的手機造成了很多資源浪費,比如CPU,內存等的占用率過高,在用戶需要多任務操作時,受到了不小的影響,帶來了許多不便,而對于大多數(shù)普通用戶,許多功能用不上,形同虛設。針對以上各種弊端,選擇了開發(fā)多語種的音頻視頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,滿足一般用戶(如聽歌,看電影)的需求,除了能播放常見格

17、式的語音視頻文件,高級功能:還能播放RMVB格式的視頻文件。此外,還能支持中文、英文等語言界面。</p><p>  要研究了各種市場上流行的手機播放器,了解它們各自的插件及編碼方式,還有各種播放器播放的特別格式文件,分析各種編碼的優(yōu)缺點以及各種播放器本身存在的缺陷和特點,編寫出功能實用,使用方便快捷的播放器。目前已經實現(xiàn)的功能有能播放常見音頻文件的功能,如MP3,WAV等,擁有播放菜單,能選擇播放清單,具備一般

18、播放器的功能,如快進,快退,音量調節(jié)等。播放模式也比較完善,有單曲,順序,循環(huán),隨機播放等模式。</p><p>  1.2 現(xiàn)行系統(tǒng)研究現(xiàn)狀</p><p>  Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設備,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領導及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操

19、作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權方式,發(fā)布了Android的源代碼。第一部Android智能手機發(fā)布于2008年10月。Android逐漸擴展到平板電腦及其他領域上,如電視、數(shù)碼相機、游戲機等。2011年第一季度,A

20、ndroid在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2012年11月數(shù)據顯示,Android占據全球智能手機操作系統(tǒng)市場76%的份額,中國市場占有率為90%[1]。</p><p>  Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,號稱是首個為移動終端打造的真正開放和完整

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

22、,為了推廣此技術,Google和其它幾十個手機公司建立了開放手機聯(lián)盟。Android在未公開之前常被傳聞為Google電話或gPhone。大多傳聞認為Google開發(fā)的是自己的手機電話產品,而不是一套軟件平臺。到了2010年1月,Google開始發(fā)表自家品牌手機電話的Nexus One。目前最新版本為Android 4.2。</p><p>  1.3 實現(xiàn)的基本目標和研究內容</p><p&

23、gt;  本文要實現(xiàn)的基本目標和主要內容有一下幾個方面:</p><p>  音樂的播放,包括上一首、下一首、暫停、停止。</p><p>  相對歌詞的顯示和進度條的更新。</p><p>  播放模式的管理,包括單曲循環(huán)、隨機播放、整體播放。</p><p>  本地音樂的管理,自動掃描SD卡目錄,以列表顯示。</p>&l

24、t;p>  2 系統(tǒng)的需求及可行性分析</p><p>  2.1 系統(tǒng)需求分析</p><p>  軟件需求分析工作是軟件生存期中重要的一步,也是決定性的一步。軟件需求分析是一個不斷認識和逐步細化的過程,該過程將軟件計劃階段所確定的軟件范圍逐步細化到可詳細定義的程度。需求分析還是軟件開發(fā)的基礎,假定在該階段發(fā)現(xiàn)一個錯誤,解決它需要用一小時的時間,到設計、編程、測試和維護階段解決,

25、則要花幾倍甚至更多的時間。因此對于復雜系統(tǒng)而言,首先要進行需求分析。開發(fā)人員應該對用戶的要求及現(xiàn)實環(huán)境進行調查和了解[2]。</p><p><b>  2.1.1軟件目標</b></p><p>  本系統(tǒng)屬于用戶常用的音樂播放器??梢苑奖阌脩羝綍r對音樂文件的操作。本系統(tǒng)應達到以下目標: </p><p>  (1)軟件采用人機交互的方式,界

26、面美觀友好,操作靈活、方便、富有個性化。</p><p> ?。?)能夠對音樂文件進行有效的管理。</p><p> ?。?)系統(tǒng)應最大限度地實現(xiàn)易維護性和易操作性。</p><p> ?。?)對手機內存占用較低</p><p>  2.1.2系統(tǒng)界面需求</p><p>  播放器界面要求布局合理,顏色舒適,控制按鈕

27、友好,要求整體有一個主要的元素標準,統(tǒng)一的主題思想。</p><p>  2.1.3系統(tǒng)功能需求</p><p>  功能需求定義了開發(fā)人員必須實現(xiàn)的軟件功能,使得用戶能完成他們的任務,從而滿足了用戶的業(yè)務需求。用戶需求文檔描述了用戶使用產品必須要完成的任務。如下:</p><p> ?。?)需完成對音樂的播放功能,實現(xiàn)播放中上一首,下一首,暫停,停止等功能。<

28、;/p><p> ?。?)需完成對音樂歌詞的顯示,根據歌曲播放歌詞顯示正確。</p><p> ?。?)實現(xiàn)進度條對歌曲的進度提示。</p><p> ?。?)完成播放模式,實現(xiàn)基本的單曲循環(huán),隨機播放,整體播放等。</p><p>  2.1.4 系統(tǒng)性能需求</p><p>  根據Android手機系統(tǒng)要求無響應時間

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

30、t;/p><p> ?。?)當要求進行清單列表時,程序響應時間最長不能超過5秒。</p><p>  2.1.5 運行環(huán)境需求</p><p>  操作系統(tǒng):Android手機基于Linux操作系統(tǒng)。</p><p>  支持環(huán)境:Android2.2-4.0版本。</p><p>  開發(fā)環(huán)境:Eclipse。</

31、p><p>  2.2 系統(tǒng)可行性分析</p><p>  當今社會的生活節(jié)奏越來越快,人們對手機的要求也越來越高,由于手機市場發(fā)展迅速,是的手機操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場主要有三個手機操作系統(tǒng),Windows mobile,symbian,以及谷歌的Android操作系統(tǒng),其中占有開發(fā)源代碼優(yōu)勢的Android系統(tǒng)有最大的發(fā)展前景。那么能否在手機上擁有自己編寫的個性音樂播放器呢?能

32、的,谷歌Android系統(tǒng)就能做到。本文的音樂播放器就是基于谷歌Android手機平臺的播放器。</p><p>  2.2.1經濟上的可行性</p><p>  Android是 Google 歷經數(shù)年和投資數(shù)億美元開發(fā)出來的智能手機系統(tǒng),是基于 Linux 內核的操作系統(tǒng),是 Google 公司在 2007 年 11 月 5 日公布的手機操作系統(tǒng)。隨著各大移動終端生產商大力開發(fā)和生產基

33、于Android的移動智能設備,Android迅速得到業(yè)界和社會的認可,并成為整個產業(yè)的熱點,基于Android平臺的各類人才逐漸成為各大企業(yè)競相爭奪的焦點。而且Android是一個開放的系統(tǒng),不管是企業(yè)還是個人都可以參與來表達自己的創(chuàng)意和想法[3]。</p><p>  2.2.2 技術上的可行性</p><p>  Google發(fā)起了圍繞Android的組織——開放手機聯(lián)盟,其英文全稱

34、為“Open Handset Alliance”。它采用了軟件堆層(software stack,又名以軟件疊層)的架構,主要分為三部分。底層 Linux 內核只提供基本功能;其他的應用軟件則由各公司自行開發(fā),部分程序以 Java編寫。</p><p>  2.2.3 操作上的可行性</p><p>  本系統(tǒng)采用Android框架,可以在eclipse中安裝Android開發(fā)插件,使用A

35、ndroid模擬器也可以使用任意Android終端。模擬器和真正的Android手機沒有太大區(qū)別,人們對手機操作早已熟悉。</p><p>  綜合以上三方面,該系統(tǒng)具有很高的開發(fā)可行性,無論是從技術上經濟上還是操作上。故此,可以設計該系統(tǒng)流程圖,建立數(shù)據字典。</p><p><b>  3 系統(tǒng)介紹</b></p><p>  軟件功能設

36、計是使整個軟件能基本實現(xiàn)音樂的播放、上一首、下一首、暫停等功能,能讓用戶通過本軟件欣賞音樂。</p><p><b>  3.1 設計思想</b></p><p> ?。?)將系統(tǒng)分成幾個相對獨立的模塊。</p><p> ?。?)分層的模塊化程序設計思想,整個系統(tǒng)采用模塊化結構設計。作為應用程序有較強的可操作性和擴展性。</p>

37、<p> ?。?)合理的數(shù)據流設計,在應用系統(tǒng)設計中,相對獨立的模塊間以數(shù)據流相互連接,使各模塊間的耦合性較低,方便系統(tǒng)運行,提高系統(tǒng)安全性。</p><p>  3.2 系統(tǒng)功能結構圖</p><p>  根據上述需求分析,本Android版音樂播放器可分為一下幾個模塊:</p><p>  播放器基本功能如圖3-2所示:</p><

38、;p>  3.3 Android介紹</p><p>  3.3.1 Android簡介</p><p>  Android是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件[4]。</p><p>  Android是基于L

39、inux內核的軟件平臺和操作系統(tǒng),早期由Google開發(fā)(在華注冊商標名為“安致”),后由開放手機聯(lián)盟(Open Handset Alliance)開發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構,主要分為三部分。低層以Linux內核工作為基礎,只提供基本功能;其他的應用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。另外,為了推廣此技術,Google和其它幾十個手機公司建立了開放手機聯(lián)盟。Andro

40、id在未公開之前常被傳聞為Google電話或gPhone。大多傳聞認為Google開發(fā)的是自己的手機電話產品,而不是一套軟件平臺。到了2010年1月,Google開始發(fā)表自家品牌手機電話的Nexus One。目前最新版本為Android 4.2。</p><p>  3.3.2 Android Features 特性</p><p>  Android系統(tǒng)有如下的幾大特性:</p&g

41、t;<p> ?。?)應用程序框架 支持組件的重用與替換</p><p> ?。?)Dalvik虛擬機 專門為移動設備做了優(yōu)化</p><p> ?。?)內部集成瀏覽器 該瀏覽器基于開源的WebKit引擎</p><p> ?。?)優(yōu)化的圖形庫 包括2D和3D圖形庫,3D圖形庫基于OpenGL ES</p><p> ?。?)S

42、QLite 用作結構化的數(shù)據存儲</p><p>  (6)多媒體支持 包括常見的音頻、視頻和靜態(tài)印象文件格式(如 MPEG4、H.264、MP3、AAC、 AMR、JPG、PNG、 GIF)</p><p>  (7)GSM電話(依賴于硬件)</p><p> ?。?)藍牙Bluetooth,EDGE,3G and WiFi (依賴于硬件)</p>

43、<p>  (9)照相機,GPS,指南針,和加速度計 (依賴于硬件)</p><p>  (10)豐富的開發(fā)環(huán)境 包括設備模擬器,調試工具,內存及性能分析圖表,和Eclipse集成開發(fā)環(huán)境插件</p><p>  3.3.3 Android 基本框架</p><p>  Android平臺的基本框架[5]如圖4-3所示。</p><p&

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

45、 開發(fā)者完全可以訪問核心應用程序所使用的API框架。該應用程序架構用來簡化組件軟件的重用;任何一個應用程序都可以發(fā)布它的功能塊并且任何其它的應用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性限制)。該應用程序重用機制使得組建可以被用戶替換。</p><p>  所有的應用程序都由一系列的服務和系統(tǒng)組成,包括:</p><p> ?。?)可擴展的視圖(Views)可以用來建應用程序,

46、包括列表(lists),網格(grids),文本框(text boxes),按鈕(buttons),甚至包括一個可嵌入的web瀏覽器</p><p> ?。?)內容管理器(Content Providers)使得應用程序可以訪問另一個應用程序的數(shù)據(如聯(lián)系人數(shù)據庫),或者共享它們自己的數(shù)據。</p><p> ?。?)資源管理器(Resource Manager)提供非代碼資源的訪問,如本

47、地字符串,圖形,和分層文件(layout files)。</p><p> ?。?)通知管理器(Notification Manager)使得應用程序可以在狀態(tài)欄中顯示客戶通知信息。</p><p>  (5)活動類管理器(Activity Manager)用來管理應用程序生命周期并提供常用的導航回退功能。</p><p>  3.3.3.3 Libraries庫&

48、lt;/p><p>  Android 包括一個被 Android 系統(tǒng)中各種不同組件所使用的 C/C++ 庫集。該庫通過 Android 應用程序框架為開發(fā)者提供服務。以下是一些主要的核心庫:</p><p>  系統(tǒng)C庫- 一個從 BSD 繼承來的標準C系統(tǒng)函數(shù)庫(libc),專門為基于 embedded linux 的設備定制。媒體庫- 基于 PacketVideo OpenCORE;該

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

50、S 1.0 APIs實現(xiàn);該庫可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。 FreeType - 位圖(bitmap)和向量(vector)字體顯示。SQLite 一個對于所有應用程序可用,功能強勁的輕型關系型數(shù)據庫引擎[6]。</p><p>  3.3.3.4 Android Runtime</p><p>  Android包括了一個核心庫,該核心庫提供了JAVA編

51、程語言核心庫的大多數(shù)功能。</p><p>  每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik是針對于同時高效地運行多個VMs來實現(xiàn)的。Dalvik虛擬機執(zhí)行.dex的Dalvik可執(zhí)行文件,該格式文件針對最小內存使用做了優(yōu)化。該虛擬機是基于寄存器的,所有的類都經由JAVA匯編器編譯,然后通過SDK中的dx工具轉化成.dex格式由虛擬機執(zhí)行。</p&

52、gt;<p>  Dalvik虛擬機依賴于linux的一些功能,比如線程機制和底層內存管理機制。</p><p>  3.3.3.5 Linux內核</p><p>  Android 的核心系統(tǒng)服務依賴于 Linux 2.6 內核,如安全性,內存管理,進程管理,網絡協(xié)議棧和驅動模型。Linux 內核也同時作為硬件和軟件堆棧之間的硬件抽象層。未來發(fā)展老牌智能手機軟件平臺制造商

53、Symbian發(fā)言人則表示:Google的Android只不過是另一個linux,symbian對其它軟件與其形成的競爭并不感到擔心。除了北美之外,Symbian在其它地區(qū)智能手機市場都占有大部分市場份額。與iPhone相似,Android采用WebKit瀏覽器引擎,具備觸摸屏、高級圖形顯示和上網功能,用戶能夠在手機上查看電子郵件、搜索網址和觀看視頻節(jié)目等,比iPhone等其他手機更強調搜索功能,界面更強大,可以說是一種融入全部Web應

54、用的單一平臺[7]。</p><p>  3.3.4 Android 系統(tǒng)的四大組件</p><p>  在Android系統(tǒng)中,為我們提供了四大基本組件,每個組件是一個視圖,但是有些是可見的,有些是不可見的視圖,像Activity,ContentProvider是可見的視圖,Service和BroadcastReceiver是不可見的,它們只在系統(tǒng)的后臺運行。下面分別介紹四大組件:<

55、;/p><p>  3.3.4.1 Activity 簡介</p><p>  在Android系統(tǒng)中Activity提供可視化的用戶界面,一個Android應用通常由多個Activity組成。多個Activity組成了Activity棧(Stack),當前活動的Activity處于棧頂。Activity有自己的生命周期,由Android系統(tǒng)來控制。</p><p> 

56、 3.3.4.2 Service 簡介</p><p>  顧名思義Service就是運行在后臺的一種服務程序,一般很少和用戶交互,因此沒有可視化界面定義一個Service類比較簡單,只要繼承Service類,實現(xiàn)其生命周期中的方法就可以了。一個定義好的Service必須在AndroidManifest.xml配置文件注冊,通過<service>元素聲明才能使用.Service有自己的生命周期,我們

57、可以調用startService()啟動一個Service或者bindService()方法來綁定一個存在的Service 。</p><p>  3.3.4.3 Broadcast Receiver 簡介</p><p>  Broadcast Receiver 顧名思義廣播接收器,它和事件處理機制類似,只不過事件處理機制是程序組件級別的(例如,某個按鈕的單擊事件),而廣播事件處理機制是

58、系統(tǒng)級別的。到目前為止我們可以使用Intent來啟動一個程序組件,我們還可以通過使用sendBroadcast()方法來發(fā)起一個系統(tǒng)級別的事件廣播來傳遞消息。我們可以在你的應用程序中實現(xiàn)Broadcast Receiver來監(jiān)聽和響應這些廣播的Intent。</p><p>  3.3.4.4 ContentProvider簡介</p><p>  Content Provider 用來保

59、存和檢索數(shù)據,并且使應用程序之間相互訪問數(shù)據成為可能。它是跨應用程序共享數(shù)據的唯一方法。</p><p>  Android 為常用的數(shù)據類型(如:音視頻、圖片和聯(lián)系方式等)提供了大量的Content Provider。它們被定義在Android.provider包下面。通過這樣定義好的ContentProvider 我們可以方便的進行數(shù)據操作。當然我們必須擁有適當?shù)臋嘞?。我們也可以自己來定ContentProv

60、ider共享我們的數(shù)據,方便用戶的訪問。</p><p>  3.3.5 SQLite 簡介</p><p>  SQLite,是一款輕量級的關系型數(shù)據庫。由于它占用的資源非常少,所以在很多嵌入式設備都是用SQLite來存儲數(shù)據。并且它目前支持Windows/Linux/Unix等等主流的操作系統(tǒng),兼容性還不錯。我們也可以用多種開發(fā)語言如C#、Java、PHP等來通過ODBC接口操作SQL

61、ite,十分方便。</p><p>  Android作為目前主流的移動操作系統(tǒng),完全符合SQLite占用資源少的優(yōu)勢,故在Android平臺上,集成了一個嵌入式關系型數(shù)據庫—SQLite。如果你想要開發(fā) Android 應用程序,一定需要在 Android 上存儲數(shù)據,使用SQLite 數(shù)據庫是一種非常好的選擇[8]。</p><p>  本數(shù)據庫支持功能如下:</p>&

62、lt;p> ?。?)自動建表,支持屬性來自繼承類:可根據注解自動完成建表,并且對于繼承類中的注解字段也支持自動建表。</p><p> ?。?)自動支持增刪改,增改支持對象化操作:增刪改是數(shù)據庫操作的最基本單元,不用重復寫這些增刪改的代碼,并且添加和更新支持類似于hibernate中的對象化操作。 </p><p> ?。?)查詢方式靈活:支持android框架提供的方式,也支持原生

63、sql方式。</p><p> ?。?)查詢結果對象化:對于查詢結果可自動包裝為實體對象,類似于hibernate框架。</p><p> ?。?)查詢結果靈活:查詢結果支持對象化,也支持結果為List<Map<String,String>>形式,這個方法在實際項目中很實用,且效率更好些。</p><p>  3.4 Android音樂播放器

64、的工程</p><p>  3.4.1 Android項目</p><p>  Android的四大基本組件:Activity(活動),Service(服務),BroadcastReceiver(廣播),ContentProvider(內容提供者),各組件之間要進行切換需要一個意圖或企圖Intent類,通過啟動StartIntent()方法來使各組件進行跳轉。</p><

65、;p>  Android的五大布局方式:LinearLayout(線性布局) FrameLayout(幀布局) TableLayout(表格布局)AbsoluteLayout(絕對布局) RelativeLayout(相對布局)</p><p>  五種布局方式可以相互嵌套,Android各種漂亮的界面都是通過嵌套布局而實現(xiàn)的。</p><p>  Android的線程,以及線程之間

66、通信的中介:Handler類。</p><p>  Android配置文件:AndroidManifest.Xml及res資源文件中各種屬性布局方式引用的資源等。</p><p>  Android系統(tǒng)將插件ADT集成到了Eclipse工具上,因此,一個Android程序啟動后,系統(tǒng)會啟動一個模擬器(Emulator)(圖1-6),該模擬器是一款手機板的樣式,擁有手機硬件的基本操作。我們也

67、可以將右邊的鍵盤通過代碼屬性設置將其隱藏,界面的大小可自由設定[9]。</p><p>  3.4.2 Android 工程程序結構</p><p>  Android工程基本結構目錄包括:src (源代碼)、gen(Android系統(tǒng)自動生成的常量)、Res(資源文件):主要存放程序界面的布局配置(.xml)文件和圖片資源。AndroidMainfes.xml 是四大組件的驅動配置文件,

68、有它的存在,Android程序的四大組件才可以正常的跳轉。Android資源的類型和布局[10]。</p><p>  表3-4-2工程結構圖</p><p>  3.4.3 AndroidManifest.xml文件</p><p>  Android系統(tǒng)的任何一個程序啟動都需要AndroidManifest.xml來啟動程序,任何一個新建的工程目錄都會自動生成一

69、個AndroidManifest.xml文件,此配置文件是整個程序能夠正常運行的核心,它里面包含了Android SDK的版本,程序運行的默認Activity,當程序中的任何一個組件觸發(fā)事件后,系統(tǒng)都會自動的去AndroidManifest.xml中尋找標識來作出相應的操作。任何一個AndroidManifest.Xml文件的格式都應為:</p><p>  <?xml version=“1.0” enco

70、ding=“utf-8”?></p><p>  <manifest></p><p>  <application></p><p>  <activity></p><p>  <intent-filter></p><p>  <action/>&

71、lt;category/></p><p>  </intent-filter> </p><p>  </activity></p><p>  </application></p><p>  <user-sdk/><uses-permission/></p>

72、<p>  </manifest></p><p>  Android系統(tǒng)有一個編碼的規(guī)定,支持的編碼是"utf-8",當程序中出現(xiàn)亂碼是,我們須將其編碼格式轉化為"utf-8".在 AndroidManifest.xml中會在第一行聲明一句:<?xml version="1.0" encoding="utf-8&

73、quot;?>。它是該系統(tǒng)支持的版本和編碼。在第二行定義了我們需要使用的架構,該架構來自xmlns:Android=http://schemas.Android.com/apk/res/Android。</p><p>  xmlns(XML namespace)是一個命名空間,它就像一條河的源頭一樣能讓我們找到系統(tǒng)架構,每一個配置文件必須有這個xmlns,否則程序中的所使用的所有資源將無法找到。<

74、/p><p>  在application元素我們定義Android:icon="@drawable/icon",Android:label="@string/app_name",Android:icon是程序在手機中顯示的圖片,我們運用@drawable/icon表示了對res/drawable目錄下的icon.png的引用[11]。@string/app_name表示了對

75、res/value目錄下string.Xml中定義的app_name參數(shù)的引用。</p><p>  <application</p><p>  Android:icon=“@drawable/sendsong”</p><p>  Android:label=“@string/app_name”></p><p><b&

76、gt;  <activity</b></p><p>  Android:name=“.main.StartActivity”</p><p>  Android:label=“@string/app_name”></p><p>  <intent-filter></p><p>  <action

77、 android:name=“android.intent.action.MAIN”/></p><p>  <category android:name=“android.intent.category.LAUNCHER”/></p><p>  </intent-filter></p><p>  </activity>

78、</p><p>  </application></p><p>  這是系統(tǒng)確定的首先要啟動的Activity是StartActivity。</p><p>  在intent-filter選項中,有action和category等等屬性,我們需要定義action為 Android.intent.action.MAIN,category的值為Andr

79、oid.intent.category.LAUNCHER,它們是系統(tǒng)的值,程序在解析到這些常用后就可以確定首先要啟動的Activity。當我們需要通過一個組件觸發(fā)另一個組件時,我們將設定action和category的其它屬性值,系統(tǒng)會根據我們設定的屬性值去AndroidManifest.Xml的application 中尋找標識,任何一個Activity的action和category是唯一,所以程序在任何時候都能唯一啟動一個Acti

80、vity,這樣,不同的Activity之間的跳轉就實現(xiàn)了。</p><p>  在AndroidManifest.Xml中有一個根結點<uses-sdk>,它是我們需要定義的ADT版本,例如我們將其值設定為Android:minSdkVersion="10",則表示此Android工程所用的版本為2.3,Android還有1.1、1.5、1.6、2.0、2.1、2.2、2.3、3.

81、0、4.0這幾個版本[12]。</p><p>  如果我們需要對網絡進行訪問,比如打開一個網頁,剛我還需要設置一個網絡訪問權限uses-permission,將其的值設置為Android:name="Android.permission.INTERNET,我們就可以訪問網絡了。當然uses-permission還有很多其它的權限,例如GPS定位權限,瀏覽器數(shù)據存取權限com.Android.brows

82、er.permission.READ_HISTORY_BOOKMARKS等等。</p><p>  當程序的任何一個組件要用到時,都必須在AndroidManifest.Xml文件中聲明。四大組件要使用前都需要聲明,其聲明方式如下:</p><p>  <service></service></p><p>  <provider>

83、;</provider></p><p>  <activity></activity></p><p>  <receiver></receiver></p><p>  其中聲明provider時還需要聲明其授權 authorities。每個組件里面還有很多的屬性,會根據程序的具體需要定義不同的屬性。過

84、濾器intent-filter 有兩種啟動方式來啟動界面。</p><p><b> ?。?)顯示方式</b></p><p>  顯示方式是在代碼中的直接啟動組件,啟動時會聲明Intent,在它的構造方法Intent(組件1,組件2)中直接指定一個組件的名字,然后調用方法startIntent(intent)以啟動指定的組件。</p><p>

85、;<b> ?。?)隱式方式</b></p><p>  隱式方式是通過過濾器來過濾完成的,啟動的組件必須滿足action和category的條件才能夠啟動該組件。這些屬性是在AndroidManifest.Xml文件中聲明的。兩種啟動方式都可以通過程序setAction(ACTION常量)和startActivity(intent)或配置文件兩種方式來實現(xiàn)組件的跳轉。</p>

86、<p><b>  4 系統(tǒng)詳細設計</b></p><p>  4.1 歡迎界面設計</p><p>  在歡迎界面模塊的設計中,主要應用了ViewPager控件。</p><p>  歡迎界面模塊運行結果如圖(圖4-1 歡迎界面)所示。</p><p><b> ?。?)頁面設計</b&

87、gt;</p><p>  整體為RelativeLayout布局,其中包含一個ViewPager控件,和五個ImageView用于顯示左右滑動切換的小圓點。</p><p><b>  (2)代碼編寫</b></p><p>  歡迎界面模塊主要是用于增強用戶體驗,讓用戶較容易接受本軟件。</p><p><b&

88、gt;  主要代碼如下:</b></p><p>  private void initDots() {</p><p>  LinearLayout ll = (LinearLayout) findViewById(R.id.ll);</p><p>  dots = new ImageView[pics.length];</p><

89、;p>  for (int i = 0; i < pics.length; i++) {</p><p>  dots[i] = (ImageView) ll.getChildAt(i);</p><p>  dots[i].setEnabled(true);// 都設為灰色</p><p>  dots[i].setOnClickListener(th

90、is);</p><p>  dots[i].setTag(i);// 設置位置tag,方便取出與當前位置對應</p><p><b>  }</b></p><p>  currentIndex = 0;</p><p>  dots[currentIndex].setEnabled(false);// 設置為白色,即

91、選中狀態(tài)</p><p><b>  }</b></p><p><b>  /**</b></p><p>  * 設置當前的引導頁</p><p><b>  */</b></p><p>  private void setCurView(int

92、position) {</p><p>  if (position < 0 || position >= pics.length) {</p><p><b>  return;</b></p><p><b>  }</b></p><p>  vp.setCurrentItem(p

93、osition);</p><p><b>  }</b></p><p><b>  /**</b></p><p>  * 這只當前引導小點的選中</p><p><b>  */</b></p><p>  private void setCurD

94、ot(int positon) {</p><p>  if (positon < 0 || positon > pics.length - 1 || currentIndex == positon) {</p><p><b>  return;</b></p><p><b>  }</b></p&g

95、t;<p>  dots[positon].setEnabled(false);</p><p>  dots[currentIndex].setEnabled(true);</p><p>  currentIndex = positon;</p><p><b>  }</b></p><p>  //

96、 當滑動狀態(tài)改變時調用</p><p><b>  @Override</b></p><p>  public void onPageScrollStateChanged(int arg0) {</p><p>  if(arg0 == 1){</p><p>  if(lastValue == pics.length

97、-1){</p><p>  Intent intent1 = new Intent(ViewPagerActivity.this,MainActivity.class);</p><p>  startActivity(intent1);</p><p><b>  finish();</b></p><p><

98、b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  // 當當前頁面被滑動時調用</p><p><b>  @Override</b></p><p>  publi

99、c void onPageScrolled(int arg0, float arg1, int arg2) {</p><p>  lastValue = arg0;</p><p><b>  }</b></p><p>  // 當新的頁面被選中時調用</p><p><b>  @Override<

100、/b></p><p>  public void onPageSelected(int arg0) {</p><p>  // 設置底部小點選中狀態(tài)</p><p>  setCurDot(arg0);</p><p><b>  }</b></p><p><b>  @Ov

101、erride</b></p><p>  public void onClick(View v) {</p><p>  int position = (Integer) v.getTag();</p><p>  setCurView(position);</p><p>  setCurDot(position);</p

102、><p><b>  }</b></p><p>  4.2 播放列表功能</p><p>  當歡迎界面過后,自動跳轉到主界面。播放列表模塊運行結果如圖(圖4-2)所示: </p><p><b> ?。?)頁面設計</b></p><p>  播放列表模塊中是一個List

103、View控件,ListView中的item采用LinearLayout布局,其中包含了歌曲logo和歌曲名稱。</p><p> ?。?)界面功能的實現(xiàn)代碼:</p><p><b>  @Override</b></p><p>  protected void onResume() {</p><p>  HashM

104、ap<String, String> map=null;</p><p>  List<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>();</p><p>  if(mp3list.size()!=0){</p><p&g

105、t;  for(Mp3 m:mp3list){</p><p>  map=new HashMap<String, String>();</p><p>  map.put("mp3_name", m.getMp3_name());</p><p>  list.add(map);</p><p><b&

106、gt;  }</b></p><p>  SimpleAdapter adapter=new SimpleAdapter(this, list, R.layout.allmusic_item, new String[]{"mp3_name"}, new int[]{R.id.mp3_name});</p><p>  musicLv.setAdapter(

107、adapter);</p><p><b>  }</b></p><p>  musicLv.setOnItemClickListener(new OnItemClickListener() {</p><p><b>  @Override</b></p><p>  public void o

108、nItemClick(AdapterView<?> parent, View view,</p><p>  int position, long id) {</p><p>  if(mp3list!=null){</p><p>  Intent i=newIntent(MainActivity.this</p><p>  

109、,Mp3PlayerActivity.class);</p><p>  //傳遞點擊MP3的下標</p><p>  i.putExtra("index", position);</p><p>  startActivity(i);</p><p><b>  }</b></p>&

110、lt;p><b>  }</b></p><p><b>  });</b></p><p>  super.onResume();</p><p><b>  }</b></p><p>  private void AllMusic(){</p><

111、;p>  File SDFile=new File(SDPath+"mp3");</p><p>  if (!SDFile.exists()) {</p><p>  SDFile.mkdir();</p><p><b>  }</b></p><p>  mp3list=new Array

112、List<Mp3>();</p><p>  File mp3File=new File(this.SDPath+"mp3/");</p><p>  File[] files=mp3File.listFiles();</p><p>  if(files!=null){</p><p>  for(File

113、f:files){</p><p>  if(f.getName().endsWith("mp3")){</p><p>  Mp3 mp3=new Mp3();</p><p>  String[] str=f.getName().split("\\.");</p><p>  mp3.setMp3_

114、name(str[0]);</p><p>  mp3.setId(i);</p><p><b>  i++;</b></p><p>  mp3list.add(mp3);</p><p><b>  }</b></p><p><b>  }</b>

115、;</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.3 設置界面的實現(xiàn)</p><p>  實現(xiàn)抽屜拉伸樣式,使設置起來更加人性化。界面如圖(圖4-3)所示:</p><p><b> ?。?)頁面設計<

116、/b></p><p>  主要應用slidingDraw控件,實現(xiàn)抽屜樣式。</p><p>  設置列表模塊中是一個ListView控件,ListView中的item采用LinearLayout布局。 </p><p> ?。?)界面功能的實現(xiàn)代碼:</p><p>  <?xml version="1.0"

117、; encoding="utf-8"?></p><p>  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"</p><p>  android:layout_width="fill_parent"</p>

118、<p>  android:layout_height="fill_parent"</p><p>  android:orientation="vertical" ></p><p><b>  <include</b></p><p>  android:layout_wid

溫馨提示

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

評論

0/150

提交評論