版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 河北農(nóng)業(yè)大學(xué)現(xiàn)代科技學(xué)院</p><p><b> 畢業(yè)論文</b></p><p> 題 目: 基于A(yíng)ndroid系統(tǒng)的音樂(lè)播放器的實(shí)現(xiàn) </p><p> 學(xué) 部: 工程技術(shù)學(xué)部 </p><
2、;p> 專(zhuān)業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)0902班 </p><p> 學(xué) 號(hào): 2009614070205 </p><p> 學(xué)生姓名: 楊歡 </p><p> 指導(dǎo)教師姓名: 陳晨 </p><p> 指導(dǎo)教師職稱(chēng): 講師
3、 </p><p> 二O一三 年 五 月 五 日</p><p><b> 摘 要</b></p><p> 當(dāng)今社會(huì)的生活節(jié)奏越來(lái)越快,隨著硬件移動(dòng)設(shè)備的越來(lái)越先進(jìn),人們對(duì)移動(dòng)設(shè)備的要求也越來(lái)越高,從以前的追求技術(shù)到現(xiàn)在的追求視覺(jué),因此,也逐步的提高了對(duì)系統(tǒng)的要求,本文主要是對(duì)Android系統(tǒng)上音
4、樂(lè)播放器應(yīng)用程序的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行討論。本論文的音樂(lè)播放器采用了Android開(kāi)源系統(tǒng)技術(shù),利用Java語(yǔ)言和Eclipse編輯工具對(duì)播放器進(jìn)行編寫(xiě),同時(shí)給出了詳細(xì)的系統(tǒng)設(shè)計(jì)過(guò)程、部分界面圖及主要功能運(yùn)行流程圖,本文還對(duì)開(kāi)發(fā)過(guò)程中遇到的問(wèn)題和解決方法進(jìn)行了詳細(xì)的討論,該音樂(lè)播放器集播放、暫停、停止、上一首、下一首、音量調(diào)節(jié)、歌詞顯示等功能于一體,性能良好,在A(yíng)ndroid系統(tǒng)中能獨(dú)立運(yùn)行。該播放器還擁有歌曲播放模式、以及歌詞開(kāi)閉狀態(tài)的友好
5、設(shè)置。</p><p> 關(guān)鍵詞:Android,開(kāi)源系統(tǒng),音樂(lè)播放器</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 實(shí)現(xiàn)的基本目標(biāo)和研究?jī)?nèi)容2</p><p> 2 系統(tǒng)的需求及可行性分析3</p><p> 2.1 系統(tǒng)需求分析3</p><p> 2.1.1軟件目標(biāo)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 運(yùn)行環(huán)境需求4</p><p> 2.2 系統(tǒng)可行性分析4</p><p> 2.2.1經(jīng)濟(jì)上的可行性4</p><p> 2.2.2 技術(shù)上的可行性4</p><p> 2.2.3 操作上的可行性4</
11、p><p><b> 3 系統(tǒng)介紹5</b></p><p> 3.1 設(shè)計(jì)思想5</p><p> 3.2 系統(tǒng)功能結(jié)構(gòu)圖5</p><p> 3.3 Android介紹5</p><p> 3.3.1 Android簡(jiǎn)介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 簡(jiǎn)介9</p><p> 3.4 Android音樂(lè)播放器的工程9</p><p> 3
13、.4.1 Android項(xiàng)目9</p><p> 3.4.2 Android 工程程序結(jié)構(gòu)10</p><p> 3.4.3 AndroidManifest.xml文件11</p><p> 4 系統(tǒng)詳細(xì)設(shè)計(jì)13</p><p> 4.1 歡迎界面設(shè)計(jì)13</p><p> 4.2 播放列表功能
14、15</p><p> 4.3 設(shè)置界面的實(shí)現(xiàn)17</p><p> 4.4 歌曲播放界面18</p><p> 4.5 歌詞顯示設(shè)置20</p><p> 5 結(jié) 論22</p><p><b> 參考文獻(xiàn)23</b></p><p><
15、b> 致 謝24</b></p><p><b> 附錄25</b></p><p><b> 1 引 言</b></p><p> 1.1課題背景及意義</p><p> 隨著計(jì)算機(jī)的廣泛運(yùn)用,手機(jī)市場(chǎng)的迅速發(fā)展,各種音頻視頻資源也在網(wǎng)上廣為流傳,這些資源看似平
16、常,但已經(jīng)漸漸成為人們生活中必不可少的一部分了。于是各種手機(jī)播放器也緊跟著發(fā)展起來(lái),但是很多播放器一味追求外觀(guān)花哨,功能龐大,對(duì)用戶(hù)的手機(jī)造成了很多資源浪費(fèi),比如CPU,內(nèi)存等的占用率過(guò)高,在用戶(hù)需要多任務(wù)操作時(shí),受到了不小的影響,帶來(lái)了許多不便,而對(duì)于大多數(shù)普通用戶(hù),許多功能用不上,形同虛設(shè)。針對(duì)以上各種弊端,選擇了開(kāi)發(fā)多語(yǔ)種的音頻視頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,滿(mǎn)足一般用戶(hù)(如聽(tīng)歌,看電影)的需求,除了能播放常見(jiàn)格
17、式的語(yǔ)音視頻文件,高級(jí)功能:還能播放RMVB格式的視頻文件。此外,還能支持中文、英文等語(yǔ)言界面。</p><p> 要研究了各種市場(chǎng)上流行的手機(jī)播放器,了解它們各自的插件及編碼方式,還有各種播放器播放的特別格式文件,分析各種編碼的優(yōu)缺點(diǎn)以及各種播放器本身存在的缺陷和特點(diǎn),編寫(xiě)出功能實(shí)用,使用方便快捷的播放器。目前已經(jīng)實(shí)現(xiàn)的功能有能播放常見(jiàn)音頻文件的功能,如MP3,WAV等,擁有播放菜單,能選擇播放清單,具備一般
18、播放器的功能,如快進(jìn),快退,音量調(diào)節(jié)等。播放模式也比較完善,有單曲,順序,循環(huán),隨機(jī)播放等模式。</p><p> 1.2 現(xiàn)行系統(tǒng)研究現(xiàn)狀</p><p> Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。尚未有統(tǒng)一中文名稱(chēng),中國(guó)大陸地區(qū)較多人使用“安卓”或“安致”。Android操
19、作系統(tǒng)最初由Andy Rubin開(kāi)發(fā),主要支持手機(jī)。2005年8月由Google收購(gòu)注資。2007年11月,Google與84家硬件制造商、軟件開(kāi)發(fā)商及電信營(yíng)運(yùn)商組建開(kāi)放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開(kāi)源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。2011年第一季度,A
20、ndroid在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。 2012年11月數(shù)據(jù)顯示,Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng)76%的份額,中國(guó)市場(chǎng)占有率為90%[1]。</p><p> Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)的名稱(chēng),該平臺(tái)由操作系統(tǒng)、中間件、用戶(hù)界面和應(yīng)用軟件組成,號(hào)稱(chēng)是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整
21、的移動(dòng)軟件。</p><p> Android是基于Linux內(nèi)核的軟件平臺(tái)和操作系統(tǒng),早期由Google開(kāi)發(fā)(在華注冊(cè)商標(biāo)名為“安致”),后由開(kāi)放手機(jī)聯(lián)盟(Open Handset Alliance)開(kāi)發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。低層以L(fǎng)inux內(nèi)核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開(kāi)發(fā),以Java作為編寫(xiě)程序的一部分。另外
22、,為了推廣此技術(shù),Google和其它幾十個(gè)手機(jī)公司建立了開(kāi)放手機(jī)聯(lián)盟。Android在未公開(kāi)之前常被傳聞為Google電話(huà)或gPhone。大多傳聞?wù)J為Google開(kāi)發(fā)的是自己的手機(jī)電話(huà)產(chǎn)品,而不是一套軟件平臺(tái)。到了2010年1月,Google開(kāi)始發(fā)表自家品牌手機(jī)電話(huà)的Nexus One。目前最新版本為Android 4.2。</p><p> 1.3 實(shí)現(xiàn)的基本目標(biāo)和研究?jī)?nèi)容</p><p&
23、gt; 本文要實(shí)現(xiàn)的基本目標(biāo)和主要內(nèi)容有一下幾個(gè)方面:</p><p> 音樂(lè)的播放,包括上一首、下一首、暫停、停止。</p><p> 相對(duì)歌詞的顯示和進(jìn)度條的更新。</p><p> 播放模式的管理,包括單曲循環(huán)、隨機(jī)播放、整體播放。</p><p> 本地音樂(lè)的管理,自動(dòng)掃描SD卡目錄,以列表顯示。</p>&l
24、t;p> 2 系統(tǒng)的需求及可行性分析</p><p> 2.1 系統(tǒng)需求分析</p><p> 軟件需求分析工作是軟件生存期中重要的一步,也是決定性的一步。軟件需求分析是一個(gè)不斷認(rèn)識(shí)和逐步細(xì)化的過(guò)程,該過(guò)程將軟件計(jì)劃階段所確定的軟件范圍逐步細(xì)化到可詳細(xì)定義的程度。需求分析還是軟件開(kāi)發(fā)的基礎(chǔ),假定在該階段發(fā)現(xiàn)一個(gè)錯(cuò)誤,解決它需要用一小時(shí)的時(shí)間,到設(shè)計(jì)、編程、測(cè)試和維護(hù)階段解決,
25、則要花幾倍甚至更多的時(shí)間。因此對(duì)于復(fù)雜系統(tǒng)而言,首先要進(jìn)行需求分析。開(kāi)發(fā)人員應(yīng)該對(duì)用戶(hù)的要求及現(xiàn)實(shí)環(huán)境進(jìn)行調(diào)查和了解[2]。</p><p><b> 2.1.1軟件目標(biāo)</b></p><p> 本系統(tǒng)屬于用戶(hù)常用的音樂(lè)播放器??梢苑奖阌脩?hù)平時(shí)對(duì)音樂(lè)文件的操作。本系統(tǒng)應(yīng)達(dá)到以下目標(biāo): </p><p> ?。?)軟件采用人機(jī)交互的方式,界
26、面美觀(guān)友好,操作靈活、方便、富有個(gè)性化。</p><p> ?。?)能夠?qū)σ魳?lè)文件進(jìn)行有效的管理。</p><p> ?。?)系統(tǒng)應(yīng)最大限度地實(shí)現(xiàn)易維護(hù)性和易操作性。</p><p> ?。?)對(duì)手機(jī)內(nèi)存占用較低</p><p> 2.1.2系統(tǒng)界面需求</p><p> 播放器界面要求布局合理,顏色舒適,控制按鈕
27、友好,要求整體有一個(gè)主要的元素標(biāo)準(zhǔn),統(tǒng)一的主題思想。</p><p> 2.1.3系統(tǒng)功能需求</p><p> 功能需求定義了開(kāi)發(fā)人員必須實(shí)現(xiàn)的軟件功能,使得用戶(hù)能完成他們的任務(wù),從而滿(mǎn)足了用戶(hù)的業(yè)務(wù)需求。用戶(hù)需求文檔描述了用戶(hù)使用產(chǎn)品必須要完成的任務(wù)。如下:</p><p> ?。?)需完成對(duì)音樂(lè)的播放功能,實(shí)現(xiàn)播放中上一首,下一首,暫停,停止等功能。<
28、;/p><p> ?。?)需完成對(duì)音樂(lè)歌詞的顯示,根據(jù)歌曲播放歌詞顯示正確。</p><p> ?。?)實(shí)現(xiàn)進(jìn)度條對(duì)歌曲的進(jìn)度提示。</p><p> ?。?)完成播放模式,實(shí)現(xiàn)基本的單曲循環(huán),隨機(jī)播放,整體播放等。</p><p> 2.1.4 系統(tǒng)性能需求</p><p> 根據(jù)Android手機(jī)系統(tǒng)要求無(wú)響應(yīng)時(shí)間
29、為5秒,所以就有如下性能要求:</p><p> ?。?)當(dāng)要求歌曲播放時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。</p><p> (2)當(dāng)要求歌曲暫停時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。</p><p> (3)當(dāng)要求歌曲停止時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。</p><p> ?。?)當(dāng)要求歌曲上/下一首時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。&l
30、t;/p><p> ?。?)當(dāng)要求進(jìn)行清單列表時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。</p><p> 2.1.5 運(yùn)行環(huán)境需求</p><p> 操作系統(tǒng):Android手機(jī)基于Linux操作系統(tǒng)。</p><p> 支持環(huán)境:Android2.2-4.0版本。</p><p> 開(kāi)發(fā)環(huán)境:Eclipse。</
31、p><p> 2.2 系統(tǒng)可行性分析</p><p> 當(dāng)今社會(huì)的生活節(jié)奏越來(lái)越快,人們對(duì)手機(jī)的要求也越來(lái)越高,由于手機(jī)市場(chǎng)發(fā)展迅速,是的手機(jī)操作系統(tǒng)也出現(xiàn)了不同各類(lèi),現(xiàn)在的市場(chǎng)主要有三個(gè)手機(jī)操作系統(tǒng),Windows mobile,symbian,以及谷歌的Android操作系統(tǒng),其中占有開(kāi)發(fā)源代碼優(yōu)勢(shì)的Android系統(tǒng)有最大的發(fā)展前景。那么能否在手機(jī)上擁有自己編寫(xiě)的個(gè)性音樂(lè)播放器呢?能
32、的,谷歌Android系統(tǒng)就能做到。本文的音樂(lè)播放器就是基于谷歌Android手機(jī)平臺(tái)的播放器。</p><p> 2.2.1經(jīng)濟(jì)上的可行性</p><p> Android是 Google 歷經(jīng)數(shù)年和投資數(shù)億美元開(kāi)發(fā)出來(lái)的智能手機(jī)系統(tǒng),是基于 Linux 內(nèi)核的操作系統(tǒng),是 Google 公司在 2007 年 11 月 5 日公布的手機(jī)操作系統(tǒng)。隨著各大移動(dòng)終端生產(chǎn)商大力開(kāi)發(fā)和生產(chǎn)基
33、于A(yíng)ndroid的移動(dòng)智能設(shè)備,Android迅速得到業(yè)界和社會(huì)的認(rèn)可,并成為整個(gè)產(chǎn)業(yè)的熱點(diǎn),基于A(yíng)ndroid平臺(tái)的各類(lèi)人才逐漸成為各大企業(yè)競(jìng)相爭(zhēng)奪的焦點(diǎn)。而且Android是一個(gè)開(kāi)放的系統(tǒng),不管是企業(yè)還是個(gè)人都可以參與來(lái)表達(dá)自己的創(chuàng)意和想法[3]。</p><p> 2.2.2 技術(shù)上的可行性</p><p> Google發(fā)起了圍繞Android的組織——開(kāi)放手機(jī)聯(lián)盟,其英文全稱(chēng)
34、為“Open Handset Alliance”。它采用了軟件堆層(software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。底層 Linux 內(nèi)核只提供基本功能;其他的應(yīng)用軟件則由各公司自行開(kāi)發(fā),部分程序以 Java編寫(xiě)。</p><p> 2.2.3 操作上的可行性</p><p> 本系統(tǒng)采用Android框架,可以在eclipse中安裝Android開(kāi)發(fā)插件,使用A
35、ndroid模擬器也可以使用任意Android終端。模擬器和真正的Android手機(jī)沒(méi)有太大區(qū)別,人們對(duì)手機(jī)操作早已熟悉。</p><p> 綜合以上三方面,該系統(tǒng)具有很高的開(kāi)發(fā)可行性,無(wú)論是從技術(shù)上經(jīng)濟(jì)上還是操作上。故此,可以設(shè)計(jì)該系統(tǒng)流程圖,建立數(shù)據(jù)字典。</p><p><b> 3 系統(tǒng)介紹</b></p><p> 軟件功能設(shè)
36、計(jì)是使整個(gè)軟件能基本實(shí)現(xiàn)音樂(lè)的播放、上一首、下一首、暫停等功能,能讓用戶(hù)通過(guò)本軟件欣賞音樂(lè)。</p><p><b> 3.1 設(shè)計(jì)思想</b></p><p> (1)將系統(tǒng)分成幾個(gè)相對(duì)獨(dú)立的模塊。</p><p> ?。?)分層的模塊化程序設(shè)計(jì)思想,整個(gè)系統(tǒng)采用模塊化結(jié)構(gòu)設(shè)計(jì)。作為應(yīng)用程序有較強(qiáng)的可操作性和擴(kuò)展性。</p>
37、<p> ?。?)合理的數(shù)據(jù)流設(shè)計(jì),在應(yīng)用系統(tǒng)設(shè)計(jì)中,相對(duì)獨(dú)立的模塊間以數(shù)據(jù)流相互連接,使各模塊間的耦合性較低,方便系統(tǒng)運(yùn)行,提高系統(tǒng)安全性。</p><p> 3.2 系統(tǒng)功能結(jié)構(gòu)圖</p><p> 根據(jù)上述需求分析,本Android版音樂(lè)播放器可分為一下幾個(gè)模塊:</p><p> 播放器基本功能如圖3-2所示:</p><
38、;p> 3.3 Android介紹</p><p> 3.3.1 Android簡(jiǎn)介</p><p> Android是Google于2007年11月5日宣布的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)的名稱(chēng),該平臺(tái)由操作系統(tǒng)、中間件、用戶(hù)界面和應(yīng)用軟件組成,號(hào)稱(chēng)是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件[4]。</p><p> Android是基于L
39、inux內(nèi)核的軟件平臺(tái)和操作系統(tǒng),早期由Google開(kāi)發(fā)(在華注冊(cè)商標(biāo)名為“安致”),后由開(kāi)放手機(jī)聯(lián)盟(Open Handset Alliance)開(kāi)發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。低層以L(fǎng)inux內(nèi)核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開(kāi)發(fā),以Java作為編寫(xiě)程序的一部分。另外,為了推廣此技術(shù),Google和其它幾十個(gè)手機(jī)公司建立了開(kāi)放手機(jī)聯(lián)盟。Andro
40、id在未公開(kāi)之前常被傳聞為Google電話(huà)或gPhone。大多傳聞?wù)J為Google開(kāi)發(fā)的是自己的手機(jī)電話(huà)產(chǎn)品,而不是一套軟件平臺(tái)。到了2010年1月,Google開(kāi)始發(fā)表自家品牌手機(jī)電話(huà)的Nexus One。目前最新版本為Android 4.2。</p><p> 3.3.2 Android Features 特性</p><p> Android系統(tǒng)有如下的幾大特性:</p&g
41、t;<p> ?。?)應(yīng)用程序框架 支持組件的重用與替換</p><p> (2)Dalvik虛擬機(jī) 專(zhuān)門(mén)為移動(dòng)設(shè)備做了優(yōu)化</p><p> ?。?)內(nèi)部集成瀏覽器 該瀏覽器基于開(kāi)源的WebKit引擎</p><p> ?。?)優(yōu)化的圖形庫(kù) 包括2D和3D圖形庫(kù),3D圖形庫(kù)基于OpenGL ES</p><p> ?。?)S
42、QLite 用作結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)</p><p> ?。?)多媒體支持 包括常見(jiàn)的音頻、視頻和靜態(tài)印象文件格式(如 MPEG4、H.264、MP3、AAC、 AMR、JPG、PNG、 GIF)</p><p> ?。?)GSM電話(huà)(依賴(lài)于硬件)</p><p> ?。?)藍(lán)牙Bluetooth,EDGE,3G and WiFi (依賴(lài)于硬件)</p>
43、<p> (9)照相機(jī),GPS,指南針,和加速度計(jì) (依賴(lài)于硬件)</p><p> (10)豐富的開(kāi)發(fā)環(huán)境 包括設(shè)備模擬器,調(diào)試工具,內(nèi)存及性能分析圖表,和Eclipse集成開(kāi)發(fā)環(huán)境插件</p><p> 3.3.3 Android 基本框架</p><p> Android平臺(tái)的基本框架[5]如圖4-3所示。</p><p&
44、gt; 3.3.3.1 Applications</p><p> Application Android會(huì)同一個(gè)核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶(hù)端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是用JAVA編寫(xiě)的。</p><p> 3.3.3.2 Application FrameWork</p><p>
45、 開(kāi)發(fā)者完全可以訪(fǎng)問(wèn)核心應(yīng)用程序所使用的API框架。該應(yīng)用程序架構(gòu)用來(lái)簡(jiǎn)化組件軟件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性限制)。該應(yīng)用程序重用機(jī)制使得組建可以被用戶(hù)替換。</p><p> 所有的應(yīng)用程序都由一系列的服務(wù)和系統(tǒng)組成,包括:</p><p> ?。?)可擴(kuò)展的視圖(Views)可以用來(lái)建應(yīng)用程序,
46、包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons),甚至包括一個(gè)可嵌入的web瀏覽器</p><p> (2)內(nèi)容管理器(Content Providers)使得應(yīng)用程序可以訪(fǎng)問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù)),或者共享它們自己的數(shù)據(jù)。</p><p> ?。?)資源管理器(Resource Manager)提供非代碼資源的訪(fǎng)問(wèn),如本
47、地字符串,圖形,和分層文件(layout files)。</p><p> (4)通知管理器(Notification Manager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶(hù)通知信息。</p><p> ?。?)活動(dòng)類(lèi)管理器(Activity Manager)用來(lái)管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。</p><p> 3.3.3.3 Libraries庫(kù)&
48、lt;/p><p> Android 包括一個(gè)被 Android 系統(tǒng)中各種不同組件所使用的 C/C++ 庫(kù)集。該庫(kù)通過(guò) Android 應(yīng)用程序框架為開(kāi)發(fā)者提供服務(wù)。以下是一些主要的核心庫(kù):</p><p> 系統(tǒng)C庫(kù)- 一個(gè)從 BSD 繼承來(lái)的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù)(libc),專(zhuān)門(mén)為基于 embedded linux 的設(shè)備定制。媒體庫(kù)- 基于 PacketVideo OpenCORE;該
49、庫(kù)支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)印像文件包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。Surface Manager - 對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供2D和3D圖層的無(wú)縫融合。LibWebCore - 一個(gè)最新的web瀏覽器引擎用來(lái)支持Android瀏覽器和一個(gè)可嵌入的web視圖。SGL - 一個(gè)內(nèi)置的2D圖形引擎 3D libraries - 基于OpenGL E
50、S 1.0 APIs實(shí)現(xiàn);該庫(kù)可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。 FreeType - 位圖(bitmap)和向量(vector)字體顯示。SQLite 一個(gè)對(duì)于所有應(yīng)用程序可用,功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫(kù)引擎[6]。</p><p> 3.3.3.4 Android Runtime</p><p> Android包括了一個(gè)核心庫(kù),該核心庫(kù)提供了JAVA編
51、程語(yǔ)言核心庫(kù)的大多數(shù)功能。</p><p> 每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik是針對(duì)于同時(shí)高效地運(yùn)行多個(gè)VMs來(lái)實(shí)現(xiàn)的。Dalvik虛擬機(jī)執(zhí)行.dex的Dalvik可執(zhí)行文件,該格式文件針對(duì)最小內(nèi)存使用做了優(yōu)化。該虛擬機(jī)是基于寄存器的,所有的類(lèi)都經(jīng)由JAVA匯編器編譯,然后通過(guò)SDK中的dx工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。</p&
52、gt;<p> Dalvik虛擬機(jī)依賴(lài)于linux的一些功能,比如線(xiàn)程機(jī)制和底層內(nèi)存管理機(jī)制。</p><p> 3.3.3.5 Linux內(nèi)核</p><p> Android 的核心系統(tǒng)服務(wù)依賴(lài)于 Linux 2.6 內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Linux 內(nèi)核也同時(shí)作為硬件和軟件堆棧之間的硬件抽象層。未來(lái)發(fā)展老牌智能手機(jī)軟件平臺(tái)制造商
53、Symbian發(fā)言人則表示:Google的Android只不過(guò)是另一個(gè)linux,symbian對(duì)其它軟件與其形成的競(jìng)爭(zhēng)并不感到擔(dān)心。除了北美之外,Symbian在其它地區(qū)智能手機(jī)市場(chǎng)都占有大部分市場(chǎng)份額。與iPhone相似,Android采用WebKit瀏覽器引擎,具備觸摸屏、高級(jí)圖形顯示和上網(wǎng)功能,用戶(hù)能夠在手機(jī)上查看電子郵件、搜索網(wǎng)址和觀(guān)看視頻節(jié)目等,比iPhone等其他手機(jī)更強(qiáng)調(diào)搜索功能,界面更強(qiáng)大,可以說(shuō)是一種融入全部Web應(yīng)
54、用的單一平臺(tái)[7]。</p><p> 3.3.4 Android 系統(tǒng)的四大組件</p><p> 在A(yíng)ndroid系統(tǒng)中,為我們提供了四大基本組件,每個(gè)組件是一個(gè)視圖,但是有些是可見(jiàn)的,有些是不可見(jiàn)的視圖,像Activity,ContentProvider是可見(jiàn)的視圖,Service和BroadcastReceiver是不可見(jiàn)的,它們只在系統(tǒng)的后臺(tái)運(yùn)行。下面分別介紹四大組件:<
55、;/p><p> 3.3.4.1 Activity 簡(jiǎn)介</p><p> 在A(yíng)ndroid系統(tǒng)中Activity提供可視化的用戶(hù)界面,一個(gè)Android應(yīng)用通常由多個(gè)Activity組成。多個(gè)Activity組成了Activity棧(Stack),當(dāng)前活動(dòng)的Activity處于棧頂。Activity有自己的生命周期,由Android系統(tǒng)來(lái)控制。</p><p>
56、 3.3.4.2 Service 簡(jiǎn)介</p><p> 顧名思義Service就是運(yùn)行在后臺(tái)的一種服務(wù)程序,一般很少和用戶(hù)交互,因此沒(méi)有可視化界面定義一個(gè)Service類(lèi)比較簡(jiǎn)單,只要繼承Service類(lèi),實(shí)現(xiàn)其生命周期中的方法就可以了。一個(gè)定義好的Service必須在A(yíng)ndroidManifest.xml配置文件注冊(cè),通過(guò)<service>元素聲明才能使用.Service有自己的生命周期,我們
57、可以調(diào)用startService()啟動(dòng)一個(gè)Service或者bindService()方法來(lái)綁定一個(gè)存在的Service 。</p><p> 3.3.4.3 Broadcast Receiver 簡(jiǎn)介</p><p> Broadcast Receiver 顧名思義廣播接收器,它和事件處理機(jī)制類(lèi)似,只不過(guò)事件處理機(jī)制是程序組件級(jí)別的(例如,某個(gè)按鈕的單擊事件),而廣播事件處理機(jī)制是
58、系統(tǒng)級(jí)別的。到目前為止我們可以使用Intent來(lái)啟動(dòng)一個(gè)程序組件,我們還可以通過(guò)使用sendBroadcast()方法來(lái)發(fā)起一個(gè)系統(tǒng)級(jí)別的事件廣播來(lái)傳遞消息。我們可以在你的應(yīng)用程序中實(shí)現(xiàn)Broadcast Receiver來(lái)監(jiān)聽(tīng)和響應(yīng)這些廣播的Intent。</p><p> 3.3.4.4 ContentProvider簡(jiǎn)介</p><p> Content Provider 用來(lái)保
59、存和檢索數(shù)據(jù),并且使應(yīng)用程序之間相互訪(fǎng)問(wèn)數(shù)據(jù)成為可能。它是跨應(yīng)用程序共享數(shù)據(jù)的唯一方法。</p><p> Android 為常用的數(shù)據(jù)類(lèi)型(如:音視頻、圖片和聯(lián)系方式等)提供了大量的Content Provider。它們被定義在A(yíng)ndroid.provider包下面。通過(guò)這樣定義好的ContentProvider 我們可以方便的進(jìn)行數(shù)據(jù)操作。當(dāng)然我們必須擁有適當(dāng)?shù)臋?quán)限。我們也可以自己來(lái)定ContentProv
60、ider共享我們的數(shù)據(jù),方便用戶(hù)的訪(fǎng)問(wèn)。</p><p> 3.3.5 SQLite 簡(jiǎn)介</p><p> SQLite,是一款輕量級(jí)的關(guān)系型數(shù)據(jù)庫(kù)。由于它占用的資源非常少,所以在很多嵌入式設(shè)備都是用SQLite來(lái)存儲(chǔ)數(shù)據(jù)。并且它目前支持Windows/Linux/Unix等等主流的操作系統(tǒng),兼容性還不錯(cuò)。我們也可以用多種開(kāi)發(fā)語(yǔ)言如C#、Java、PHP等來(lái)通過(guò)ODBC接口操作SQL
61、ite,十分方便。</p><p> Android作為目前主流的移動(dòng)操作系統(tǒng),完全符合SQLite占用資源少的優(yōu)勢(shì),故在A(yíng)ndroid平臺(tái)上,集成了一個(gè)嵌入式關(guān)系型數(shù)據(jù)庫(kù)—SQLite。如果你想要開(kāi)發(fā) Android 應(yīng)用程序,一定需要在 Android 上存儲(chǔ)數(shù)據(jù),使用SQLite 數(shù)據(jù)庫(kù)是一種非常好的選擇[8]。</p><p> 本數(shù)據(jù)庫(kù)支持功能如下:</p>&
62、lt;p> (1)自動(dòng)建表,支持屬性來(lái)自繼承類(lèi):可根據(jù)注解自動(dòng)完成建表,并且對(duì)于繼承類(lèi)中的注解字段也支持自動(dòng)建表。</p><p> (2)自動(dòng)支持增刪改,增改支持對(duì)象化操作:增刪改是數(shù)據(jù)庫(kù)操作的最基本單元,不用重復(fù)寫(xiě)這些增刪改的代碼,并且添加和更新支持類(lèi)似于hibernate中的對(duì)象化操作。 </p><p> ?。?)查詢(xún)方式靈活:支持android框架提供的方式,也支持原生
63、sql方式。</p><p> ?。?)查詢(xún)結(jié)果對(duì)象化:對(duì)于查詢(xún)結(jié)果可自動(dòng)包裝為實(shí)體對(duì)象,類(lèi)似于hibernate框架。</p><p> ?。?)查詢(xún)結(jié)果靈活:查詢(xún)結(jié)果支持對(duì)象化,也支持結(jié)果為L(zhǎng)ist<Map<String,String>>形式,這個(gè)方法在實(shí)際項(xiàng)目中很實(shí)用,且效率更好些。</p><p> 3.4 Android音樂(lè)播放器
64、的工程</p><p> 3.4.1 Android項(xiàng)目</p><p> Android的四大基本組件:Activity(活動(dòng)),Service(服務(wù)),BroadcastReceiver(廣播),ContentProvider(內(nèi)容提供者),各組件之間要進(jìn)行切換需要一個(gè)意圖或企圖Intent類(lèi),通過(guò)啟動(dòng)StartIntent()方法來(lái)使各組件進(jìn)行跳轉(zhuǎn)。</p><
65、;p> Android的五大布局方式:LinearLayout(線(xiàn)性布局) FrameLayout(幀布局) TableLayout(表格布局)AbsoluteLayout(絕對(duì)布局) RelativeLayout(相對(duì)布局)</p><p> 五種布局方式可以相互嵌套,Android各種漂亮的界面都是通過(guò)嵌套布局而實(shí)現(xiàn)的。</p><p> Android的線(xiàn)程,以及線(xiàn)程之間
66、通信的中介:Handler類(lèi)。</p><p> Android配置文件:AndroidManifest.Xml及res資源文件中各種屬性布局方式引用的資源等。</p><p> Android系統(tǒng)將插件ADT集成到了Eclipse工具上,因此,一個(gè)Android程序啟動(dòng)后,系統(tǒng)會(huì)啟動(dòng)一個(gè)模擬器(Emulator)(圖1-6),該模擬器是一款手機(jī)板的樣式,擁有手機(jī)硬件的基本操作。我們也
67、可以將右邊的鍵盤(pán)通過(guò)代碼屬性設(shè)置將其隱藏,界面的大小可自由設(shè)定[9]。</p><p> 3.4.2 Android 工程程序結(jié)構(gòu)</p><p> Android工程基本結(jié)構(gòu)目錄包括:src (源代碼)、gen(Android系統(tǒng)自動(dòng)生成的常量)、Res(資源文件):主要存放程序界面的布局配置(.xml)文件和圖片資源。AndroidMainfes.xml 是四大組件的驅(qū)動(dòng)配置文件,
68、有它的存在,Android程序的四大組件才可以正常的跳轉(zhuǎn)。Android資源的類(lèi)型和布局[10]。</p><p> 表3-4-2工程結(jié)構(gòu)圖</p><p> 3.4.3 AndroidManifest.xml文件</p><p> Android系統(tǒng)的任何一個(gè)程序啟動(dòng)都需要AndroidManifest.xml來(lái)啟動(dòng)程序,任何一個(gè)新建的工程目錄都會(huì)自動(dòng)生成一
69、個(gè)AndroidManifest.xml文件,此配置文件是整個(gè)程序能夠正常運(yùn)行的核心,它里面包含了Android SDK的版本,程序運(yùn)行的默認(rèn)Activity,當(dāng)程序中的任何一個(gè)組件觸發(fā)事件后,系統(tǒng)都會(huì)自動(dòng)的去AndroidManifest.xml中尋找標(biāo)識(shí)來(lái)作出相應(yīng)的操作。任何一個(gè)AndroidManifest.Xml文件的格式都應(yīng)為:</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)有一個(gè)編碼的規(guī)定,支持的編碼是"utf-8",當(dāng)程序中出現(xiàn)亂碼是,我們須將其編碼格式轉(zhuǎn)化為"utf-8".在 AndroidManifest.xml中會(huì)在第一行聲明一句:<?xml version="1.0" encoding="utf-8&
73、quot;?>。它是該系統(tǒng)支持的版本和編碼。在第二行定義了我們需要使用的架構(gòu),該架構(gòu)來(lái)自xmlns:Android=http://schemas.Android.com/apk/res/Android。</p><p> xmlns(XML namespace)是一個(gè)命名空間,它就像一條河的源頭一樣能讓我們找到系統(tǒng)架構(gòu),每一個(gè)配置文件必須有這個(gè)xmlns,否則程序中的所使用的所有資源將無(wú)法找到。<
74、/p><p> 在application元素我們定義Android:icon="@drawable/icon",Android:label="@string/app_name",Android:icon是程序在手機(jī)中顯示的圖片,我們運(yùn)用@drawable/icon表示了對(duì)res/drawable目錄下的icon.png的引用[11]。@string/app_name表示了對(duì)
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)確定的首先要啟動(dòng)的Activity是StartActivity。</p><p> 在intent-filter選項(xiàng)中,有action和category等等屬性,我們需要定義action為 Android.intent.action.MAIN,category的值為Andr
79、oid.intent.category.LAUNCHER,它們是系統(tǒng)的值,程序在解析到這些常用后就可以確定首先要啟動(dòng)的Activity。當(dāng)我們需要通過(guò)一個(gè)組件觸發(fā)另一個(gè)組件時(shí),我們將設(shè)定action和category的其它屬性值,系統(tǒng)會(huì)根據(jù)我們?cè)O(shè)定的屬性值去AndroidManifest.Xml的application 中尋找標(biāo)識(shí),任何一個(gè)Activity的action和category是唯一,所以程序在任何時(shí)候都能唯一啟動(dòng)一個(gè)Acti
80、vity,這樣,不同的Activity之間的跳轉(zhuǎn)就實(shí)現(xiàn)了。</p><p> 在A(yíng)ndroidManifest.Xml中有一個(gè)根結(jié)點(diǎn)<uses-sdk>,它是我們需要定義的ADT版本,例如我們將其值設(shè)定為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這幾個(gè)版本[12]。</p><p> 如果我們需要對(duì)網(wǎng)絡(luò)進(jìn)行訪(fǎng)問(wèn),比如打開(kāi)一個(gè)網(wǎng)頁(yè),剛我還需要設(shè)置一個(gè)網(wǎng)絡(luò)訪(fǎng)問(wèn)權(quán)限uses-permission,將其的值設(shè)置為Android:name="Android.permission.INTERNET,我們就可以訪(fǎng)問(wèn)網(wǎng)絡(luò)了。當(dāng)然uses-permission還有很多其它的權(quán)限,例如GPS定位權(quán)限,瀏覽器數(shù)據(jù)存取權(quán)限com.Android.brows
82、er.permission.READ_HISTORY_BOOKMARKS等等。</p><p> 當(dāng)程序的任何一個(gè)組件要用到時(shí),都必須在A(yíng)ndroidManifest.Xml文件中聲明。四大組件要使用前都需要聲明,其聲明方式如下:</p><p> <service></service></p><p> <provider>
83、;</provider></p><p> <activity></activity></p><p> <receiver></receiver></p><p> 其中聲明provider時(shí)還需要聲明其授權(quán) authorities。每個(gè)組件里面還有很多的屬性,會(huì)根據(jù)程序的具體需要定義不同的屬性。過(guò)
84、濾器intent-filter 有兩種啟動(dòng)方式來(lái)啟動(dòng)界面。</p><p><b> ?。?)顯示方式</b></p><p> 顯示方式是在代碼中的直接啟動(dòng)組件,啟動(dòng)時(shí)會(huì)聲明Intent,在它的構(gòu)造方法Intent(組件1,組件2)中直接指定一個(gè)組件的名字,然后調(diào)用方法startIntent(intent)以啟動(dòng)指定的組件。</p><p>
85、;<b> ?。?)隱式方式</b></p><p> 隱式方式是通過(guò)過(guò)濾器來(lái)過(guò)濾完成的,啟動(dòng)的組件必須滿(mǎn)足action和category的條件才能夠啟動(dòng)該組件。這些屬性是在A(yíng)ndroidManifest.Xml文件中聲明的。兩種啟動(dòng)方式都可以通過(guò)程序setAction(ACTION常量)和startActivity(intent)或配置文件兩種方式來(lái)實(shí)現(xiàn)組件的跳轉(zhuǎn)。</p>
86、<p><b> 4 系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p> 4.1 歡迎界面設(shè)計(jì)</p><p> 在歡迎界面模塊的設(shè)計(jì)中,主要應(yīng)用了ViewPager控件。</p><p> 歡迎界面模塊運(yùn)行結(jié)果如圖(圖4-1 歡迎界面)所示。</p><p><b> ?。?)頁(yè)面設(shè)計(jì)</b&
87、gt;</p><p> 整體為RelativeLayout布局,其中包含一個(gè)ViewPager控件,和五個(gè)ImageView用于顯示左右滑動(dòng)切換的小圓點(diǎn)。</p><p><b> ?。?)代碼編寫(xiě)</b></p><p> 歡迎界面模塊主要是用于增強(qiáng)用戶(hù)體驗(yàn),讓用戶(hù)較容易接受本軟件。</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);// 都設(shè)為灰色</p><p> dots[i].setOnClickListener(th
90、is);</p><p> dots[i].setTag(i);// 設(shè)置位置tag,方便取出與當(dāng)前位置對(duì)應(yīng)</p><p><b> }</b></p><p> currentIndex = 0;</p><p> dots[currentIndex].setEnabled(false);// 設(shè)置為白色,即
91、選中狀態(tài)</p><p><b> }</b></p><p><b> /**</b></p><p> * 設(shè)置當(dāng)前的引導(dǎo)頁(yè)</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> * 這只當(dāng)前引導(dǎo)小點(diǎn)的選中</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、 當(dāng)滑動(dòng)狀態(tài)改變時(shí)調(diào)用</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> // 當(dāng)當(dāng)前頁(yè)面被滑動(dòng)時(shí)調(diào)用</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> // 當(dāng)新的頁(yè)面被選中時(shí)調(diào)用</p><p><b> @Override<
100、/b></p><p> public void onPageSelected(int arg0) {</p><p> // 設(shè)置底部小點(diǎn)選中狀態(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> 當(dāng)歡迎界面過(guò)后,自動(dòng)跳轉(zhuǎn)到主界面。播放列表模塊運(yùn)行結(jié)果如圖(圖4-2)所示: </p><p><b> ?。?)頁(yè)面設(shè)計(jì)</b></p><p> 播放列表模塊中是一個(gè)List
103、View控件,ListView中的item采用LinearLayout布局,其中包含了歌曲logo和歌曲名稱(chēng)。</p><p> ?。?)界面功能的實(shí)現(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> //傳遞點(diǎn)擊MP3的下標(biāo)</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 設(shè)置界面的實(shí)現(xiàn)</p><p> 實(shí)現(xiàn)抽屜拉伸樣式,使設(shè)置起來(lái)更加人性化。界面如圖(圖4-3)所示:</p><p><b> (1)頁(yè)面設(shè)計(jì)<
116、/b></p><p> 主要應(yīng)用slidingDraw控件,實(shí)現(xiàn)抽屜樣式。</p><p> 設(shè)置列表模塊中是一個(gè)ListView控件,ListView中的item采用LinearLayout布局。 </p><p> ?。?)界面功能的實(shí)現(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于android系統(tǒng)的音樂(lè)播放器的實(shí)現(xiàn)
- 基于android的音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)2
- 基于android系統(tǒng)的音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)
- 基于android音樂(lè)播放器設(shè)計(jì)與實(shí)現(xiàn)
- 基于android手機(jī)平臺(tái)的音樂(lè)播放器 (2)
- 基于A(yíng)ndroid系統(tǒng)音樂(lè)播放器的設(shè)計(jì).pdf
- 基于android的音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)
- android課程設(shè)計(jì)---基于android系統(tǒng)的音樂(lè)播放器設(shè)計(jì)與實(shí)現(xiàn)
- 基于 Android 的音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于android的音樂(lè)播放器的設(shè)計(jì)
- 基于android的音樂(lè)播放器開(kāi)題報(bào)告
- 基于android的音樂(lè)播放器的設(shè)計(jì)
- 基于A(yíng)ndroid的音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 軟件工程畢業(yè)論文-基于android系統(tǒng)的音樂(lè)播放器的實(shí)現(xiàn)2
- Android音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于A(yíng)ndroid的音樂(lè)播放器軟件的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于android的音樂(lè)播放器畢業(yè)論文
- 基于A(yíng)ndroid的手機(jī)音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于 android 的音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)(無(wú)源碼)
- 基于android音樂(lè)播放器的設(shè)計(jì)與開(kāi)發(fā)
評(píng)論
0/150
提交評(píng)論