本科畢設(shè)論文-基于Android平臺(tái)的點(diǎn)歌系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
本科畢設(shè)論文-基于Android平臺(tái)的點(diǎn)歌系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
本科畢設(shè)論文-基于Android平臺(tái)的點(diǎn)歌系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
本科畢設(shè)論文-基于Android平臺(tái)的點(diǎn)歌系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
本科畢設(shè)論文-基于Android平臺(tái)的點(diǎn)歌系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于Android平臺(tái)的點(diǎn)歌系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)摘 要隨著通信設(shè)備網(wǎng)絡(luò)和計(jì)算機(jī)科學(xué)的不斷發(fā)展,新一代的移動(dòng)終端用戶對(duì)移動(dòng)設(shè)備的功能和性能有了更高的要求。因此,在移動(dòng)終端開(kāi)發(fā)出功能強(qiáng)大以及界面美觀操作簡(jiǎn)易的手機(jī)應(yīng)用程序具有廣闊的市場(chǎng)前景。本文設(shè)計(jì)的點(diǎn)歌系統(tǒng)是基于Android平臺(tái)而設(shè)計(jì)的,Android平臺(tái)是目前發(fā)展最快、最具市場(chǎng)前景的智能手機(jī)操作系統(tǒng)。Android平臺(tái)以Linux系統(tǒng)作為平臺(tái)的基礎(chǔ),使用Linux內(nèi)核可以加快軟件移植速度。目前適用于桌面操作系統(tǒng)的點(diǎn)歌系統(tǒng)發(fā)展較快,通常具有強(qiáng)大的音樂(lè)點(diǎn)播功能和友好的用戶界面。而手機(jī)音樂(lè)點(diǎn)播器,由于其應(yīng)用的特殊性,使其開(kāi)發(fā)難度有所增加。 本文介紹了基于

2、Android平臺(tái)應(yīng)用程序開(kāi)發(fā)的關(guān)鍵技術(shù),對(duì)點(diǎn)歌系統(tǒng)做了詳細(xì)的需求分析,并詳細(xì)介紹了點(diǎn)歌系統(tǒng)的總體設(shè)計(jì),包括架構(gòu)設(shè)計(jì)、功能模塊的劃分、配置文件AndroidManifest.xml的設(shè)計(jì)。 本文通過(guò)對(duì)基于Android平臺(tái)上點(diǎn)歌系統(tǒng)開(kāi)發(fā)與實(shí)現(xiàn)的介紹,希望能為今后開(kāi)發(fā)出功能更強(qiáng)大的移動(dòng)設(shè)備多媒體播放軟件提供有益的借鑒。該系統(tǒng)采用Android SDK,Eclipse作為開(kāi)發(fā)工具。關(guān)鍵詞:Android;點(diǎn)歌系統(tǒng);音樂(lè)播放器摘要IAbstractII1緒論11.1課題背景11.2國(guó)內(nèi)外手機(jī)操作系統(tǒng)應(yīng)用開(kāi)發(fā)情況11.3本文主要工作22 Android系統(tǒng)簡(jiǎn)介32.1 Android系統(tǒng)概述32.2

3、Android系統(tǒng)架構(gòu)42.3 Android開(kāi)發(fā)環(huán)境配置62.4 Android程序開(kāi)發(fā)92.4.1 程序開(kāi)發(fā)組件92.4.2 程序界面開(kāi)發(fā)122.5 Android系統(tǒng)數(shù)據(jù)存儲(chǔ)方式143 SQLite數(shù)據(jù)庫(kù)143.1 SQLite主要語(yǔ)法153.1.1 結(jié)構(gòu)新建153.1.2 結(jié)構(gòu)刪除153.1.3 數(shù)據(jù)操作153.1.4 事務(wù)處理163.2 SQLite內(nèi)置函數(shù)163.3 SQLite常用操作173.3.1 數(shù)據(jù)庫(kù)文件的打開(kāi)和關(guān)閉173.3.2 數(shù)據(jù)庫(kù)文件的查詢184點(diǎn)歌系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)214.1 系統(tǒng)功能設(shè)計(jì)224.1.1 數(shù)據(jù)庫(kù)設(shè)計(jì)224.1.2 功能模塊設(shè)計(jì)224.2 程序運(yùn)行截圖

4、285 總結(jié)與展望28參考文獻(xiàn)30致謝301緒論1.1課題背景 隨著社會(huì)的發(fā)展,經(jīng)濟(jì)水平的提高,手機(jī)越來(lái)越普及。據(jù)工信部統(tǒng)計(jì)數(shù)據(jù),2014年一月底中國(guó)移動(dòng)通訊用戶達(dá)12.35億,其中4.19億(33.94%)為3G用戶,8.38億(67.80%)為移動(dòng)互聯(lián)網(wǎng)接入用戶。同時(shí)伴隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展,手機(jī)的功能也變得越來(lái)越豐富。從原來(lái)只具有簡(jiǎn)單通信功能的非智能手機(jī)到現(xiàn)在具有手機(jī)操作系統(tǒng),除通話功能以外,還集上網(wǎng)、聊天、炒股、收發(fā)郵件等功能于一身的智能手機(jī)系統(tǒng)?;贏ndroid平臺(tái)應(yīng)用程序的開(kāi)發(fā)就更加具有市場(chǎng)價(jià)值智能手機(jī)具有五大特點(diǎn):具有開(kāi)放的操作系統(tǒng),可以自由安裝第三方應(yīng)用,使系統(tǒng)功能得到無(wú)限

5、擴(kuò)展;具有無(wú)線接入互聯(lián)網(wǎng)的能力,即在GSM網(wǎng)絡(luò)中需要支持GPRS,在CDMA網(wǎng)絡(luò)中支持CDMA 1X或3G網(wǎng)絡(luò);具有PDA的功能,包括PIM(個(gè)人信息管理)、多媒體應(yīng)用、瀏覽網(wǎng)頁(yè)、日程記事等;功能強(qiáng)大,擴(kuò)展性強(qiáng),第三方支持多;人性化,可以根據(jù)個(gè)人需要擴(kuò)展及其功能。隨著Android平臺(tái)的高速發(fā)展,Android平臺(tái)下手機(jī)多媒體技術(shù)應(yīng)用開(kāi)發(fā)也越來(lái)越火。Android平臺(tái)對(duì)移動(dòng)設(shè)備的程序集中包括一個(gè)操作系統(tǒng),一個(gè)中間件和一些關(guān)鍵性應(yīng)用。開(kāi)發(fā)人員可以在平臺(tái)系統(tǒng)上快速開(kāi)發(fā),并可以利用其它開(kāi)發(fā)人員的工作成果。所以,這為手機(jī)開(kāi)發(fā)創(chuàng)造力更大的靈活性,工作少,周期短,快速成型,并一步到位,同時(shí)用戶可以最大限度

6、的自定義自己的手機(jī),以豐富自己手機(jī)的功能,增加手機(jī)在市場(chǎng)上的競(jìng)爭(zhēng)力。Android平臺(tái)以Linux系統(tǒng)作為平臺(tái)的基礎(chǔ),使用Linux內(nèi)核可以加快軟件移植速度。目前適用于桌面操作系統(tǒng)的點(diǎn)歌系統(tǒng)發(fā)展較快,通常具有強(qiáng)大的音樂(lè)點(diǎn)播功能和友好的用戶界面。而手機(jī)音樂(lè)點(diǎn)播器,由于其應(yīng)用的特殊性,使其開(kāi)發(fā)難度有所增加。1.2國(guó)內(nèi)外手機(jī)操作系統(tǒng)應(yīng)用開(kāi)發(fā)情況 隨著移動(dòng)終端市場(chǎng)競(jìng)爭(zhēng)的日趨激烈,越來(lái)越多的軟件開(kāi)發(fā)人員加入到手機(jī)操作系統(tǒng)應(yīng)用軟件的開(kāi)發(fā)中來(lái)。能否快速滿足用戶的新需求,吸引新的用戶群,尋求通信業(yè)務(wù)發(fā)展的新增值點(diǎn),提供多樣化、多層次化的業(yè)務(wù),已成為各終端廠商在競(jìng)爭(zhēng)中求生存、求發(fā)展的首要任務(wù)。目前全球比較流行的

7、移動(dòng)操作系統(tǒng)平臺(tái)有蘋果公司的IOS、Google公司的Android、微軟公司的Widows Mobile,諾基亞公司Symbian系統(tǒng)已逐漸被淘汰。目前大部分手機(jī)操作系統(tǒng)應(yīng)用軟件都是基于這幾個(gè)操作系統(tǒng)平臺(tái)之上開(kāi)發(fā)的。 根據(jù)IDC2013年11月13日?qǐng)?bào)告顯示,谷歌的Android平臺(tái)在全球智能手機(jī)出貨量中的比例已經(jīng)突破80,微軟Windows Phone的出貨量也增速驚人,蘋果iOS和黑莓系統(tǒng)的市場(chǎng)份額則有所下降。IDC認(rèn)為,Android之所以能夠占據(jù)超過(guò)80的智能手機(jī)市場(chǎng),主要是借助于其超高的“性價(jià)比”。雖然Android平臺(tái)的手機(jī)價(jià)廉,但是其性能卻一點(diǎn)也不低廉。Android平臺(tái)簡(jiǎn)單實(shí)

8、用,無(wú)論是功能還是外觀設(shè)計(jì),都可以與蘋果一決高下。 根據(jù)基于全球八大移動(dòng)開(kāi)發(fā)平臺(tái)的調(diào)查,400多位開(kāi)發(fā)者。從近年的數(shù)據(jù)來(lái)看,Android是最受歡迎的平臺(tái),有近70%的受訪開(kāi)發(fā)者最近從事過(guò)Android相關(guān)開(kāi)發(fā)。從上述調(diào)查情況可以看出,Android操作系統(tǒng)是目前最火、前景最被看好的手機(jī)操作系統(tǒng),因此,開(kāi)發(fā)Android應(yīng)用軟件具有很好的市場(chǎng)價(jià)值。 目前市場(chǎng)上的音樂(lè)點(diǎn)播器一般都是在Windows或Linux下的的產(chǎn)品,對(duì)它們的使用,都需要承擔(dān)一定的商業(yè)費(fèi)用或簽署相關(guān)的附加協(xié)議。而主流的嵌入式播放器都是基于WindowsCE或嵌入式Linux平臺(tái),因而其體積普遍教大, 而且對(duì)硬件設(shè)備要求較高。因

9、而開(kāi)發(fā)出一個(gè)功能實(shí)用,運(yùn)行速度快,占用空間小,對(duì)硬件設(shè)備要求較低,基于開(kāi)源項(xiàng)目的手機(jī)音樂(lè)點(diǎn)播器就成為本次設(shè)計(jì)的出發(fā)點(diǎn),也正是Android平臺(tái)開(kāi)發(fā)價(jià)值所在。1.3本文主要工作本文首先介紹了Android操作系統(tǒng)的四層架構(gòu)及基于Android系統(tǒng)的應(yīng)用程序開(kāi)發(fā)方法。接下來(lái)以點(diǎn)歌系統(tǒng)的研發(fā)過(guò)程為例,詳細(xì)闡述了開(kāi)發(fā)Android系統(tǒng)應(yīng)用程序的具體過(guò)程。本課題具體實(shí)現(xiàn)以下功能: 1)數(shù)據(jù)庫(kù)設(shè)計(jì); 2)能夠添加、刪除、查看歌曲的相關(guān)信息; 3)能對(duì)歌曲進(jìn)行點(diǎn)播、編輯等相關(guān)操作; 4)設(shè)置不同的查詢條件:名稱、作曲、出版時(shí)間等。2 Android系統(tǒng)簡(jiǎn)介2.1 Android系統(tǒng)概述 Android一詞本

10、意是指“機(jī)器人”,是Google公司推出的開(kāi)源手機(jī)操作系統(tǒng)作為Google移動(dòng)互聯(lián)網(wǎng)戰(zhàn)略的重要組成部分,Android操作系統(tǒng)借助于Google這個(gè)強(qiáng)大的推手和開(kāi)放手機(jī)聯(lián)盟的支持,由默默無(wú)聞變得備受矚目,各種各樣基于Android系統(tǒng)的設(shè)備相繼問(wèn)世。雖然Android系統(tǒng)從推出到現(xiàn)在不過(guò)短短幾年時(shí)間,但作為移動(dòng)終端設(shè)備操作系統(tǒng)中的重量級(jí)一員,它的影響力越來(lái)越大,吸引了越來(lái)越多的開(kāi)發(fā)者、設(shè)備生產(chǎn)商和軟件開(kāi)發(fā)商等加入。作為一個(gè)推出不久的移動(dòng)終端開(kāi)發(fā)平臺(tái),為何會(huì)有如此強(qiáng)大的發(fā)展?jié)摿腿绱搜该偷陌l(fā)展速度,每個(gè)人都會(huì)有自己的答案??偨Y(jié)起來(lái),可能包括以下幾點(diǎn): 1)系統(tǒng)的開(kāi)源性和免費(fèi)性:Android系統(tǒng)

11、是一個(gè)對(duì)第三方軟件完全開(kāi)放的平臺(tái),開(kāi)發(fā)者在編寫Android應(yīng)用程序時(shí)具有更大的自由度。2)移動(dòng)互聯(lián)網(wǎng)的發(fā)展:Android采用WebKit瀏覽器引擎,與其它系統(tǒng)相比,更強(qiáng)調(diào)搜索功能,界面更強(qiáng)大,是一種融入全部Web應(yīng)用的互聯(lián)網(wǎng)絡(luò)平臺(tái)。3)相關(guān)廠商的大力支持:從組建開(kāi)放手機(jī)聯(lián)盟開(kāi)始,Google一直向服務(wù)提供商、芯片廠商和手機(jī)銷售商提供Android平臺(tái)的技術(shù)支持,幫助他們開(kāi)發(fā)出更好的Android設(shè)備。凡事都具有兩面性,作為一個(gè)如此受歡迎的系統(tǒng)也不例外。Android系統(tǒng)也有自身的一些缺點(diǎn),具體如下:1)技術(shù)需要進(jìn)一步完善:每個(gè)系統(tǒng)都不是完美的,Android也不例外,系統(tǒng)自身的一些bug需

12、要進(jìn)一步完善。尤其是Android系統(tǒng)作為一個(gè)開(kāi)源的系統(tǒng),面臨的攻擊會(huì)比其它封閉系統(tǒng)要多,這是Android系統(tǒng)要持續(xù)發(fā)展所必須解決的一個(gè)重要問(wèn)題。2)開(kāi)放手機(jī)聯(lián)盟模式的挑戰(zhàn):Android由開(kāi)放手機(jī)聯(lián)盟開(kāi)發(fā)、維護(hù)和完善,這種模式,是否會(huì)對(duì)Android未來(lái)的發(fā)展、定位起到阻礙作用,這些都不能下定論。3)其他技術(shù)的競(jìng)爭(zhēng):微軟因?yàn)閾碛蠵C操作系統(tǒng)市場(chǎng)最大的占有率,在未來(lái)手機(jī)與電腦互相聯(lián)動(dòng)并實(shí)現(xiàn)無(wú)縫對(duì)接方面Windows Mobile相比Android具有先天優(yōu)勢(shì),此外,即使在智能終端自身的操作系統(tǒng)上,iOS系統(tǒng)也是Android的一個(gè)勁敵。這些都給Android系統(tǒng)的進(jìn)一步發(fā)展帶來(lái)了巨大挑戰(zhàn),如

13、果能很好的解決這些問(wèn)題,也將會(huì)進(jìn)一步促進(jìn)系統(tǒng)的發(fā)展。2.2 Android系統(tǒng)架構(gòu)Android系統(tǒng)采用了軟件棧的設(shè)計(jì)結(jié)構(gòu),從上到下由四層組成,分別是Linux內(nèi)核層、中間層、應(yīng)用程序框架(Application Framework)和應(yīng)用層(Applications)。如圖2-1所示。圖2-1 Android系統(tǒng)架構(gòu)下面對(duì)每層進(jìn)行具體的描述: (一)Linux內(nèi)核:Android系統(tǒng)的內(nèi)核在Linux2.6內(nèi)核的基礎(chǔ)上進(jìn)行了相應(yīng)的裁剪和改進(jìn),繼承了Linux內(nèi)核安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型等。Linux內(nèi)核同時(shí)也為硬件和軟件之間提供了銜接,屏蔽了下層硬件的具體細(xì)節(jié)來(lái)為上層

14、提供服務(wù)。 (二)Android函數(shù)庫(kù):Android包含一個(gè)能被不同組件使用的C/C+庫(kù),這些庫(kù)通過(guò)Android應(yīng)用程序框架來(lái)為上層應(yīng)用程序提供服務(wù),下面是一些常用的核心庫(kù): 1)libc:系統(tǒng)C庫(kù),從BSD發(fā)展而來(lái)的標(biāo)準(zhǔn)C函數(shù)庫(kù),是專門為基于嵌入式Linux設(shè)備所定制的。 2)媒體庫(kù):基于PacketVideo OpenCORE,支持多種常用的音頻、視頻格式回訪和錄制,同時(shí)支持靜態(tài)圖像文件。 3)Surface Manager:管理顯示子系統(tǒng),為多個(gè)應(yīng)用程序提供2D和3D圖層的無(wú)縫融合。 4)SGL:底層的2D圖形引擎。 5)3D libraries:基于OperGL ESI.OAPI實(shí)

15、現(xiàn),可以使用硬件3D加速或高度優(yōu)化的軟件3D加速。 6)RreeType:位圖和矢量字體顯示。 7)SQLite:一個(gè)對(duì)所有應(yīng)用程序可用的、功能強(qiáng)大的輕量級(jí)關(guān)系型數(shù)據(jù)庫(kù)引擎。 (三)Android運(yùn)行時(shí):Android運(yùn)行時(shí)環(huán)境由一個(gè)核心庫(kù)(Core Libraries)和一個(gè)D alvik虛擬機(jī)組成,核心庫(kù)為上層應(yīng)用程序編程提供了Java語(yǔ)言核心庫(kù)的大多數(shù)功能。Dalvik虛擬機(jī)是一個(gè)不同于其他標(biāo)準(zhǔn)虛擬機(jī)的虛擬系統(tǒng),采用寄存器架構(gòu),能在一個(gè)設(shè)備中同時(shí)高效運(yùn)行多個(gè)程序。它基于Linux內(nèi)核的一些功能,如多線程機(jī)制和內(nèi)存管理機(jī)制等。Dalvik虛擬機(jī)可以運(yùn)行Android程序,這些程序需要使用d

16、x工具轉(zhuǎn)換成.dex類型的可執(zhí)行文件,該格式文件在大小方面往往比同樣的.class文件壓縮成的.jar文件更小,可以降低對(duì)內(nèi)存的要求。 (四)應(yīng)用程序框架:包含編寫核心應(yīng)用所使用的API接口,開(kāi)發(fā)者可以使用這些接口來(lái)編寫自己的應(yīng)用程序,該程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用,任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊,同時(shí)還可以使用其他程序發(fā)布的功能塊(但是要遵循安全限制)。每個(gè)應(yīng)用都會(huì)包括一系列的服務(wù)和系統(tǒng),具體如下: 1)豐富而又可擴(kuò)展的視圖:構(gòu)建應(yīng)用程序時(shí)可以將這些視圖進(jìn)行各種組合來(lái)形成各式各樣的應(yīng)用程序界面。常用的視圖包括:列表、網(wǎng)格、文本框、按鈕和內(nèi)嵌的瀏覽器等。 2)內(nèi)容提供器:提供數(shù)據(jù)共享的

17、途徑,如聯(lián)系人數(shù)據(jù)庫(kù)。 3)資源管理器:管理非代碼資源,如字符串、圖片和布局文件等并提供這些資源的訪問(wèn)方式。 4)通知管理器:幫助應(yīng)用程序在狀態(tài)欄中顯示各自的提示信息,如收到短信 5)活動(dòng)管理器:管理應(yīng)用程序的生命周期,還提供導(dǎo)航或回退功能等。 (五)應(yīng)用程序:包括電話、短信、口歷、地圖、瀏覽器、通訊錄等核心應(yīng)用程序。2.3 Android開(kāi)發(fā)環(huán)境配置 由于Java語(yǔ)言具有強(qiáng)大的功能和與平臺(tái)無(wú)關(guān)的特性,并且還具備強(qiáng)制類型安全,因此Google選擇使用Java語(yǔ)言來(lái)開(kāi)發(fā)Android系統(tǒng)下的應(yīng)用程序。 Eclipse是一個(gè)開(kāi)放源代碼的、基于Java的且具有良好擴(kuò)展性的開(kāi)發(fā)平臺(tái)。Eclipse本身

18、只是一個(gè)框架和一組服務(wù),但是通過(guò)加入插件可以構(gòu)建針對(duì)不同語(yǔ)言的開(kāi)發(fā)環(huán)境,目前支持的主要開(kāi)發(fā)語(yǔ)言有Java和C/C+。基于以上優(yōu)點(diǎn)選擇使用Eclipse來(lái)搭建Android程序的開(kāi)發(fā)環(huán)境并詳細(xì)介紹環(huán)境的配置過(guò)程。搭建Android開(kāi)發(fā)環(huán)境有以下五個(gè)主要步驟:下載并安裝JDK;下載并安裝Eclipse;下載Android SDK;下載并安裝ADT插件;配置Android AVD。 1)下載并安裝JDK; JDK是Java SE Development Kit的簡(jiǎn)寫,其中包括了Java運(yùn)行環(huán)境、Java開(kāi)發(fā)工具和一些Java核心類庫(kù)等。在安裝Eclipse之前,必須先下載和安裝JDK。 JDK是由S

19、UN公司開(kāi)發(fā),因此要下載最新的JDK,只要登錄SUN公司的官網(wǎng),選擇適合自己電腦的版本下載并按照提示安裝即可,如圖2-2所示。圖2-2 下載安裝JDK JDK安裝完成后,還得配置相應(yīng)的環(huán)境變量才能使用。環(huán)境變量的配置分為兩部分,一是JAVA HOME變量的配置,二是CLASSPATH變量的配置,這兩者的配置方法類似。2)下載并安裝Eclipse;進(jìn)入http://downloads/頁(yè)面,選擇合適的Eclipse版本下載,如圖2-3所示。安裝時(shí)注意選擇合適的安裝路徑。圖2-3 下載安裝Eclipse 3)下載Android SDK;Android SDK是Andr

20、oid專用的軟件開(kāi)發(fā)包工具,包括程序開(kāi)發(fā)中用到的函數(shù)庫(kù)、編譯程序等資源,是開(kāi)發(fā)Android程序必備的工具之一。SDK的下載網(wǎng)址是http:/developer.A Location框中選擇SDK的解壓路徑,點(diǎn)擊Apply按鈕,最后單擊OK完成。如圖2-4。圖2-4 加載Android SDK4)下載并安裝ADT插件; ADT是為方便Android應(yīng)用而開(kāi)發(fā)的插件,包含一系列強(qiáng)大的擴(kuò)展功能,可以方便、快捷的創(chuàng)建、運(yùn)行和調(diào)試Android程序。安裝ADT的步驟如下:首先,打開(kāi)Elicpse,選擇Windows-Preference-Help-Software Updates然后選擇Availab

21、le Software接著選擇Add Sites,在彈出的地址框中輸入http:/dl-5)配置Android AVD。 在Android SDK1.5版本以后的開(kāi)發(fā)中,必須至少創(chuàng)建一個(gè)AVD來(lái)模擬一套虛擬設(shè)備運(yùn)行Android應(yīng)用程序。創(chuàng)建AVD有兩種方式,一種是命令行方式,另一種是在Eclipse中創(chuàng)建,無(wú)論哪種方式,系統(tǒng)都會(huì)在默認(rèn)文件路徑下自動(dòng)創(chuàng)建一個(gè)Android文件夾來(lái)保存與AVD有關(guān)的配置信息。這里只介紹在Eclipse中創(chuàng)建AVD的方法,步驟如下:打開(kāi)Eclipse,單機(jī)Android小機(jī)器人打開(kāi)Android SDK and AVD Manager;點(diǎn)擊左側(cè)面板的Virtual

22、 Devices,再點(diǎn)擊右側(cè)的New;填入Name,選擇Target的API, SD Card大小任意;點(diǎn)擊Create AVD即可完成AVD的創(chuàng)建。如圖2-5。圖2-5 配置AVD2.4 Android程序開(kāi)發(fā)2.4.1 程序開(kāi)發(fā)組件 一個(gè)Android應(yīng)用程序通常由以下五個(gè)組件中的任意多個(gè)組成:活動(dòng)(Activity )、意圖(Intent )、服務(wù)(Service)、廣播接收器(Broadcast Receiver)和內(nèi)容提供器(Content Provider)。 Activity負(fù)責(zé)應(yīng)用程序的界面顯示;Intent負(fù)責(zé)不同組件之間的交互;Service在后臺(tái)運(yùn)行,負(fù)責(zé)執(zhí)行程序中比較費(fèi)

23、時(shí)的任務(wù);而Content Provider為不同的應(yīng)用程序之間提供了一種數(shù)據(jù)共享方式。其中Activity組件是每個(gè)應(yīng)用程序所必須用到的,因?yàn)槿魏我粋€(gè)應(yīng)用程序都必須具備與用戶交互的界面。 (一)Activity:最基本的應(yīng)用程序組件,通常表示為一個(gè)單獨(dú)的屏幕。每個(gè)Activity都是通過(guò)繼承來(lái)被實(shí)現(xiàn)為一個(gè)單獨(dú)的活動(dòng)類,一個(gè)應(yīng)用程序通常由多個(gè)Activity組成,每個(gè)Activity都具有自己的生命周期。Android系統(tǒng)中通過(guò)一個(gè)被稱為Activity棧的東西來(lái)管理各個(gè)Activity之間的關(guān)系,當(dāng)有新的Activity啟動(dòng)時(shí),它被置于棧頂,之前的Activity被保留在棧中,不再出現(xiàn)在前臺(tái)

24、,直到當(dāng)前的Activity退出為止。打開(kāi)前一個(gè) Activity可以通過(guò)回退來(lái)實(shí)現(xiàn)。Activity的生命周期如圖2-6所示,主要有以下4種狀態(tài),分別是:1)活動(dòng)狀態(tài),此時(shí)Activity處于棧頂位置并可以與用戶交互,具有可見(jiàn)性。2)暫停狀態(tài),此時(shí)的Activity失去了焦點(diǎn),但是依然保持可見(jiàn)狀態(tài)(非全屏或是透明)并保存所有的信息,在內(nèi)存過(guò)低時(shí)可能被“銷毀”。3)停止?fàn)顟B(tài),此時(shí)的Activity由于被其他Activity所遮擋而處于不可見(jiàn)狀態(tài),但是依然會(huì)保存所有的信息,在系統(tǒng)內(nèi)存過(guò)低時(shí)會(huì)被“銷毀”。4)結(jié)束狀態(tài),此時(shí)的Activity已經(jīng)被從內(nèi)存中銷毀,下一次啟動(dòng)時(shí)需要重置之前被保存的狀態(tài)。

25、圖2-6 Activity的生命周期 從上圖可以看出,Activity有以下三個(gè)循環(huán)過(guò)程:1)一個(gè)Activity的生命周期從onCreate(Bundle)開(kāi)始,到onDestroy()結(jié)束,在onCreate()中會(huì)設(shè)置所有的狀態(tài)和資源,在onDestroy()中回收這些資源,例如一個(gè)Activity中由于存在比較耗時(shí)的任務(wù),會(huì)重新開(kāi)啟一個(gè)后臺(tái)線程,這個(gè)線程可以在onCreate()中創(chuàng)建,在onDestroy()中停止。2)在onStart()到onStop()之間,Activity處于生命周期的前兩個(gè)狀態(tài),此時(shí)無(wú)論該Activity是否能與用戶交互,都具有可見(jiàn)性,可以保存相關(guān)的信息。3

26、)從onResume()開(kāi)始到onPause()結(jié)束,Activity處于活動(dòng)狀態(tài),可以實(shí)現(xiàn)和用戶的交互。Activity可以經(jīng)常在resumed和paused狀態(tài)之間切換,如當(dāng)一個(gè)新的Intent被發(fā)送時(shí)。Activity的整個(gè)生命周期由以下幾個(gè)函數(shù)定義,其中每個(gè)函數(shù)都可以重載。 public class Activity extends ApplicationContext protected void onCreate(Bundle savedlnstanceState); protected void onStart(); protected void onResume(); prot

27、ected void onPause(); protected void onStop(); protected void onDestroy(); (二)Service:沒(méi)有可視化的用戶界面,在后臺(tái)運(yùn)行,通常用來(lái)完成比較耗時(shí)的工作,并且可以與其它程序進(jìn)行交互。最典型的Service應(yīng)用是在后臺(tái)播放音樂(lè)或是從網(wǎng)絡(luò)上下載數(shù)據(jù)。有兩種不同的方式可以來(lái)啟動(dòng)一個(gè)Service,第一種方式是通過(guò)調(diào)用Context.startService()來(lái)啟動(dòng),調(diào)用Context.stopService()來(lái)結(jié)束,這種方式無(wú)論調(diào)用了多少次startService()方法,都只需要調(diào)用一次stopService()方

28、法來(lái)停止服務(wù)。第二種方式是建立一個(gè)到服務(wù)對(duì)象的鏈接,通過(guò)調(diào)用這個(gè)鏈接來(lái)獲得服務(wù)。這個(gè)鏈接通過(guò)Context.bindService()方法建立,并通過(guò)調(diào)用Context.unbindService()方法來(lái)關(guān)閉。多個(gè)用戶可以綁定至同一個(gè)服務(wù)提供對(duì)象。一個(gè)Service也具有一定的生命周期,如圖2-7所示。圖2-7 service的生命周期 從上圖可以看出,service主要有以下兩個(gè)循環(huán)過(guò)程: 1)完整的生命周期:從onCreate()開(kāi)始到onDestroy()結(jié)束,在onCreate()函數(shù)中完成初始化,在onDestroy()函數(shù)中釋放所有的資源。例如一個(gè)音樂(lè)播放程序,可以在onCrea

29、te()中創(chuàng)建音樂(lè)播放線程,在onDestroy()中終止這個(gè)線程。 2)活躍的生命周期:從onStart()開(kāi)始,在這個(gè)函數(shù)中處理傳遞給startService()的Intent對(duì)象。例如對(duì)于一個(gè)音樂(lè)播放程序,會(huì)在Intent中找到需要播放的音樂(lè)曲目。(三)BroadcastReceiver:用來(lái)接收廣播信息,并給出相應(yīng)的處理結(jié)果。這些廣播信息也許來(lái)自于系統(tǒng)自身,如電池電量低、拍攝照片、來(lái)電話或短信等;也許來(lái)自應(yīng)用程序,比如下載完成時(shí)發(fā)送通知來(lái)告知用戶。每個(gè)應(yīng)用程序擁有的廣播接收器沒(méi)有限制,并且可以對(duì)任意感興趣的通知進(jìn)行響應(yīng),廣播接收器也不具有用戶界面。廣播接收器的生命周期很短,只有在廣播消

30、息抵達(dá)接收器并且接收器中的onReceive()函數(shù)被調(diào)用時(shí)處于活躍狀態(tài),一旦onReceive()函數(shù)返回后,廣播接收器就處于失活狀態(tài)。(四)Intent:協(xié)助前面提到的三種組件完成通信過(guò)程,一個(gè)Intent由動(dòng)作(Action)、數(shù)據(jù)(Data)、分類(Category)、類型(Type)、組件(Component)和擴(kuò)展信息(Extra)等內(nèi)容組成,系統(tǒng)根據(jù)Intent中所攜帶的不同描述信息來(lái)決定將此Intent交給哪個(gè)組件以及該組件獲得Intent后要采取的動(dòng)作。 (五)Content Provider:為應(yīng)用程序之間共享數(shù)據(jù)提供了一個(gè)統(tǒng)一的接口并隱藏了具體的數(shù)據(jù)來(lái)源,Android系

31、統(tǒng)中為一些常見(jiàn)的應(yīng)用(如聯(lián)系人、音樂(lè)、圖像等)定義了相應(yīng)的Content Provider,調(diào)用者通過(guò)相應(yīng)的URI來(lái)對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)。通常Content Provider將一個(gè)應(yīng)用程序的數(shù)據(jù)封裝,并向需要使用該數(shù)據(jù)的其他應(yīng)用程序賦予權(quán)限,這樣就可以使得數(shù)據(jù)在多個(gè)程序之間共享。需要注意的是,Content Provider是基于權(quán)限控制的,這種做法可以提高數(shù)據(jù)的安全性。2.4.2 程序界面開(kāi)發(fā) Android系統(tǒng)為開(kāi)發(fā)者提供了豐富的可視化界面設(shè)計(jì)組件,包括菜單、對(duì)話框、按鈕、文本框等,其中最主要的界面元素包括以下三類。 1)視圖組件(View:是基類Android.view.View的一個(gè)實(shí)例,用

32、來(lái)存儲(chǔ)屏幕上特定矩形內(nèi)的布局和內(nèi)容屬性,由視圖又衍生出了一個(gè)子類Widgets(窗體控件),用來(lái)處理屏幕區(qū)域的測(cè)量和繪制,常用的Widget包括Text, EditText, Button,CheckBox和ScrollView等。2)視圖容器(ViewGroup:是基類Android.view.ViewGroup的一個(gè)實(shí)例,用來(lái)承載和管理一組下層的視圖和其他視圖組,通常稱為View的容器。3)布局管理:Android使用布局管理器來(lái)管理應(yīng)用程序中各用戶界面的組件,這樣做的好處是可以避免因手機(jī)分辨率、尺寸等的差異導(dǎo)致編寫的應(yīng)用程序無(wú)法移植,因?yàn)椴季止芾砥髂芨鶕?jù)運(yùn)行平臺(tái)調(diào)整組件的大小。所有的布局

33、管理器都是ViewGroup的子類,圖2-8表示布局管理器中各類的關(guān)系。圖2-8 Android布局管理器的類圖 1)LinearLayout(線性布局):該布局中元素之間成線性排列,常用的布局有水平布局和垂直布局。 2)RelativeLayout(相對(duì)布局):該布局中元素之間根據(jù)相對(duì)位置排列,即在指定一個(gè)元素位置時(shí)往往會(huì)以它的父元素或其它元素的位置作為參照,來(lái)決定當(dāng)前元素的位置,這種布局方式相對(duì)隨意,沒(méi)有規(guī)律性,但必須保證在使用之前其參照物己經(jīng)存在。 3)AbsoluteLayout(絕對(duì)布局):該布局中元素之間根據(jù)坐標(biāo)排列,即將整個(gè)手機(jī)劃分成坐標(biāo)系,通過(guò)指定坐標(biāo)系中的兩個(gè)偏移量來(lái)決定元素

34、的位置。 4)FrameLayout(幀布局):該布局為每個(gè)加入的組件都創(chuàng)建了一個(gè)空白區(qū)域(一幀),這些幀會(huì)根據(jù)gravity屬性自動(dòng)對(duì)齊,這樣會(huì)形成組件疊加的效果。 5)TableLayout(表格布局):該布局中元素之間的排列由表格決定,表格的行和列通過(guò)添加TableRow或其他組件來(lái)控制,通常加入一個(gè)TableRow或是一個(gè)組件都代表一行,表格的寬度取決于父容器的寬度,這種布局只是實(shí)現(xiàn)方式與表格類似,但元素之間并沒(méi)有實(shí)際的分界線。Android中提供了兩種方式來(lái)利用上面的組件設(shè)計(jì)布局,一是在XML布局文件中通過(guò)設(shè)置XML屬性進(jìn)行控制,二是在Java程序中通過(guò)調(diào)用函數(shù)進(jìn)行控制,也可以將這兩

35、種方法組合起來(lái)使用。Android推薦使用XML布局文件的方式來(lái)控制用戶界面的顯示,這樣做不僅簡(jiǎn)單明了,還可以將視圖控制邏輯從代碼中剝離出來(lái),放入一個(gè)單獨(dú)的文件中進(jìn)行控制,更好的體現(xiàn)了MVC原則。2.5 Android系統(tǒng)數(shù)據(jù)存儲(chǔ)方式 Android系統(tǒng)一共提供了四種數(shù)據(jù)存儲(chǔ)方式,分別是SharedPreferences(通過(guò)鍵值二元組存儲(chǔ)簡(jiǎn)單數(shù)據(jù))、文件(存儲(chǔ)較大規(guī)模的數(shù)據(jù))、SQLite數(shù)據(jù)庫(kù)(存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù))和ContentProvider(用于應(yīng)用程序之間的數(shù)據(jù)共享),下面詳細(xì)介紹每一種方式的具體使用方法和使用場(chǎng)合。1) SharedPreferences:用鍵/鍵值形式的二元組來(lái)存儲(chǔ)

36、數(shù)據(jù),支持的數(shù)據(jù)類型有Boolean, string, float, long和integer,通常用來(lái)存儲(chǔ)默認(rèn)值、實(shí)例變量、UI狀態(tài)和用戶設(shè)置等。每個(gè)應(yīng)用程序Context均有一個(gè)SharedPreferences對(duì)象,通過(guò)getSharedPreferences()函數(shù)來(lái)獲取該對(duì)象,通過(guò)getBoolean(), getFloat()和getInt()等函數(shù)讀取該對(duì)象中存儲(chǔ)的數(shù)據(jù),這些函數(shù)一共有兩個(gè)參數(shù),第一個(gè)參數(shù)為鍵/鍵值對(duì)中的鍵,第二個(gè)參數(shù)為指定鍵對(duì)應(yīng)的鍵值,如果該鍵值不存在則以默認(rèn)的函數(shù)返回值代替。修改SharedPreferences對(duì)象中的內(nèi)容需要用到putBoolean() ,

37、putFloat()和putInt()等函數(shù),并且在修改完后還要調(diào)用commit()函數(shù),否則修改無(wú)效。2)文件操作:Android上層應(yīng)用程序是用Java語(yǔ)言編寫的,在Java的I/O包中提供了大量的文件讀寫函數(shù),如java.io.BufferedReader, java.io.FileInputStream, java.io.FileOutputStream等,Android對(duì)這些函數(shù)都有良好的支持,除此之外,Android還提供了openFileInput和openFileOutput這兩個(gè)函數(shù)用來(lái)簡(jiǎn)化對(duì)文件的讀寫操作,與Java I/O包中的函數(shù)所不同的是,這兩個(gè)函數(shù)只能操作當(dāng)前應(yīng)用程

38、序所在目錄的文件。3)SQLite數(shù)據(jù)庫(kù):SQLite是一種開(kāi)源的、與底層無(wú)關(guān)的,輕量級(jí)的數(shù)據(jù)庫(kù),最大支持2048GB的數(shù)據(jù)存儲(chǔ),與其它大多數(shù)SQL數(shù)據(jù)庫(kù)不同的是,SQLite沒(méi)有獨(dú)立的服務(wù)進(jìn)程。SQLite中的數(shù)據(jù)庫(kù)文件是跨平臺(tái)的,可以在32位和64位系統(tǒng)之間,甚至Big-Endian和Little-Endian兩種不同的架構(gòu)之間自由的拷貝數(shù)據(jù),SQLite數(shù)據(jù)庫(kù)被用在大量的消費(fèi)類電子產(chǎn)品中。SQLite數(shù)據(jù)庫(kù)具有以下特點(diǎn):1)無(wú)需配置:直接解壓可執(zhí)行文件即可運(yùn)行。2)沒(méi)有服務(wù)進(jìn)程:不需要提交到服務(wù)器處理后再返回結(jié)果。3)單個(gè)數(shù)據(jù)文件:將用戶數(shù)據(jù)存儲(chǔ)在一個(gè)文件中。4)數(shù)據(jù)文件可跨平臺(tái)移植:不

39、受操作系統(tǒng)位數(shù)和架構(gòu)的限制。5)緊湊:不需要系統(tǒng)提供太大的資源,占用不到1M的內(nèi)存空間就可運(yùn)行。6)事務(wù)性:采用獨(dú)立事物處理機(jī)制,遵守ACID (Atomicity, Consistency,Isolation, Durability)原則。使用數(shù)據(jù)庫(kù)的獨(dú)占性和共享鎖處理事務(wù),這樣既允許多個(gè)進(jìn)程并發(fā)讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù),又能保證最多只有一個(gè)進(jìn)程寫數(shù)據(jù),可以有效地防止讀臟數(shù)據(jù)、不可重復(fù)讀、丟失修改等異常的發(fā)生。 3 點(diǎn)歌系統(tǒng)需求分析 為了開(kāi)發(fā)出真正滿足用戶需求的軟件產(chǎn)品,需要對(duì)開(kāi)發(fā)產(chǎn)產(chǎn)品做需求分析。對(duì)軟件需求的合理把握是軟件開(kāi)發(fā)周期中非常重要的一個(gè)環(huán)節(jié),本章將對(duì)點(diǎn)歌系統(tǒng)做較為全面的需求分析。需求分

40、析的基本任務(wù)是定義“系統(tǒng)必須做什么”這個(gè)問(wèn)題。在這一節(jié)中主要就是圍繞“Android手機(jī)開(kāi)的點(diǎn)歌系統(tǒng)必須做什么”這個(gè)問(wèn)題來(lái)分析說(shuō)明的。需求分析的任務(wù)還不是確定系統(tǒng)怎樣完成它的工作,而僅僅是確定系統(tǒng)必須完成哪些工作,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。3.1 概述 隨著手機(jī)功能的不斷增強(qiáng),音樂(lè)播放器己成為智能手機(jī)重要軟件之一。開(kāi)發(fā)一款符合廣大用戶需求的音樂(lè)播放器有很好的市場(chǎng)前景和意義。 1)需求分析目標(biāo)和任務(wù) 本軟件的目標(biāo)是開(kāi)發(fā)一款基于Android平臺(tái)符合用戶使用需求的點(diǎn)歌系統(tǒng)。本系統(tǒng)支持MP3格式的文件。用戶可以通過(guò)播放器從音樂(lè)庫(kù)里選擇自己喜愛(ài)的歌曲,新建播放列表,播放或暫停歌

41、曲,選擇上一首歌曲,下一首歌曲,調(diào)整歌曲播放的進(jìn)度,選擇播放隊(duì)列里播放的歌曲等。本軟件要求具有美觀簡(jiǎn)潔便于用戶使用的觸摸界面,這也是Android操作系統(tǒng)不同傳統(tǒng)的Windows mobile等系統(tǒng)上應(yīng)用軟件的優(yōu)勢(shì)之一。 2)用戶特點(diǎn) 本軟件最終用戶是購(gòu)買手機(jī)使用點(diǎn)歌系統(tǒng)的普通用戶。 3)假定和約束 本軟件的開(kāi)發(fā)工作是基于假定手機(jī)硬件完好,具有一定存儲(chǔ)空間。3.2 點(diǎn)歌系統(tǒng)需求分析3.2.1 功能需求 作為Android平臺(tái)上開(kāi)發(fā)的應(yīng)用軟件,它必須具備與用戶交互的界面,界面簡(jiǎn)潔美觀易于操作。因此,對(duì)點(diǎn)歌系統(tǒng)的功能規(guī)定可從點(diǎn)歌器的界面來(lái)劃分。點(diǎn)歌系統(tǒng)的用戶操作界面可分為以下三部分:音樂(lè)播放主界面

42、、音樂(lè)庫(kù)主界面、播放隊(duì)列界面。本小節(jié)通過(guò)用例圖和用例說(shuō)明分別對(duì)這三個(gè)界面進(jìn)行功能需求分析。 1)音樂(lè)播放主界面 音樂(lè)播放主界面是用戶進(jìn)入點(diǎn)歌系統(tǒng)的主界面,即用戶點(diǎn)擊HomeScreen中點(diǎn)歌系統(tǒng)的圖標(biāo),便會(huì)打開(kāi)此界面。此界面實(shí)現(xiàn)的主要功能包括播放、暫停音樂(lè),選擇播放隊(duì)列里上一個(gè)歌曲,選擇播放隊(duì)列里下一首歌曲,控制音量,定位音樂(lè)進(jìn)度條,顯示歌曲播放進(jìn)度,進(jìn)入音樂(lè)庫(kù)主界面,進(jìn)入播放隊(duì)列主界面。音樂(lè)播放主界面用例圖如下圖3-1所示。圖3-1 播放主界面用例圖 下面對(duì)音樂(lè)播放主界面進(jìn)行用例說(shuō)明。 1)播放歌曲,如表3-1所示。表3-1 播放歌曲用例說(shuō)明參與者用戶概述用戶點(diǎn)擊播放/暫停按鈕,音樂(lè)開(kāi)始播放

43、前置條件音樂(lè)播放器已準(zhǔn)備好音樂(lè)庫(kù)已掃描完成用戶從音樂(lè)庫(kù)或者播放隊(duì)列里選擇要播放的歌曲用戶已暫停歌曲詳細(xì)描述用戶點(diǎn)擊進(jìn)入播放主界面用戶點(diǎn)擊播放/暫停按鈕系統(tǒng)開(kāi)始播放音樂(lè),并刷新播放界面后置條件系統(tǒng)開(kāi)始播放音樂(lè) 2)暫停歌曲用例,如表3-2所示。表3-2 暫停歌曲用例說(shuō)明參與者用戶概述用戶點(diǎn)擊播放/暫停按鈕,音樂(lè)開(kāi)始播放前置條件播放主界面正在播放音樂(lè)詳細(xì)描述用戶點(diǎn)擊進(jìn)入播放主界面用戶點(diǎn)擊播放/暫停按鈕系統(tǒng)暫停播放音樂(lè),并刷新播放界面后置條件音樂(lè)已暫停 3)選擇上一首歌曲用例說(shuō)明,如表3-3所示。表3-3 選擇上一首歌用例說(shuō)明參與者用戶概述用戶點(diǎn)擊播放播放上一首歌曲按鈕,開(kāi)始播放上一首歌曲前置條件音

44、樂(lè)播放器已準(zhǔn)備好音樂(lè)庫(kù)已掃描完成用戶從音樂(lè)庫(kù)或者播放隊(duì)列里選擇要播放的歌曲播放主界面正在播放音樂(lè)詳細(xì)描述用戶點(diǎn)擊進(jìn)入播放主界面用戶點(diǎn)擊播放上一曲按鈕系統(tǒng)加載播放隊(duì)列中找到上一首歌曲信息系統(tǒng)開(kāi)始播放音樂(lè),并刷新播放界面后置條件系統(tǒng)成功播放上一首音樂(lè) 4)選擇下一曲用例說(shuō)明如表3-4所示。表3-4 選擇下一首歌用例說(shuō)明參與者用戶概述用戶點(diǎn)擊播放播放下一首歌曲按鈕,開(kāi)始播放下一首歌曲前置條件音樂(lè)播放器已準(zhǔn)備好音樂(lè)庫(kù)已掃描完成用戶從音樂(lè)庫(kù)或者播放隊(duì)列里選擇要播放的歌曲播放主界面正在播放音樂(lè)詳細(xì)描述用戶點(diǎn)擊進(jìn)入播放主界面用戶點(diǎn)擊播放下一曲按鈕系統(tǒng)加載播放隊(duì)列中找到下一首歌曲信息系統(tǒng)開(kāi)始播放音樂(lè),并刷新播

45、放界面后置條件系統(tǒng)成功播放下一首音樂(lè) 5)拖動(dòng)播放進(jìn)度條用例說(shuō)明,如表3-6所示。表3-5 拖動(dòng)播放進(jìn)度用例說(shuō)明參與者用戶概述用戶拖動(dòng)播放進(jìn)度條,歌曲定位到新的位置前置條件音樂(lè)播放器已準(zhǔn)備好音樂(lè)庫(kù)已掃描完成用戶點(diǎn)擊進(jìn)入播放主界面jinru播放主界面正在播放音樂(lè)詳細(xì)描述用戶拖動(dòng)播放進(jìn)度條系統(tǒng)定位到歌曲新的位置點(diǎn)歌系統(tǒng)跳到歌曲新的位置,開(kāi)始播放音樂(lè)后置條件歌曲成功定位到新的位置 音樂(lè)庫(kù)主界面 用戶點(diǎn)擊音樂(lè)庫(kù)按鈕便可跳轉(zhuǎn)到音樂(lè)庫(kù)主界面。音樂(lè)庫(kù)可認(rèn)為是便于用戶瀏覽、挑選音樂(lè)的倉(cāng)庫(kù)。該界面包含兩個(gè)子列表,分別為全部歌曲列表,播放列表。 1)全部歌曲列表 以列表形式顯示SDcard里所有歌曲的名稱及藝術(shù)家

46、名,便于用戶瀏覽和挑選歌曲。用戶選中某首歌曲,點(diǎn)擊該條目,軟件便自動(dòng)跳到音樂(lè)播放主界面播放該首歌曲。 2)播放列表 播放列表里包含我的列表和智能列表兩個(gè)子條目。在我的列表里用戶可以創(chuàng)建和刪除列表,該列表里包含的條目還有用戶自己創(chuàng)建的列表。智能列表包含新增歌曲列表和最常播放歌曲列表。新增歌曲列表是用戶最近一次存入歌曲的列表。最常播放歌曲列表是軟件根據(jù)統(tǒng)計(jì)用戶播放歌曲的次數(shù),統(tǒng)計(jì)出的最常播放歌曲的列表。音樂(lè)庫(kù)主界面用例圖3-2所示。圖3-2 音樂(lè)庫(kù)主界面用例圖4點(diǎn)歌系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)4.1 系統(tǒng)功能設(shè)計(jì)4.1.1 數(shù)據(jù)庫(kù)設(shè)計(jì) 本系統(tǒng)共設(shè)計(jì)了兩張數(shù)據(jù)庫(kù)表,分別用來(lái)存放歌曲信息和分類信息,具體見(jiàn)表4-1

47、和表4-2。表4-1 musictableidprymary keyfilenamenot nullmusic namezuozhedatelei表4-2 fenleitableidprymary keyleinot null4.1.2 功能模塊設(shè)計(jì) 本系統(tǒng)主要實(shí)現(xiàn)了以下功能:能夠添加、刪除、查看歌曲的相關(guān)信息;能對(duì)歌曲進(jìn)行點(diǎn)播、編輯等相關(guān)操作;設(shè)置不同的查詢條件:名稱、作曲、出版時(shí)間等。1)主界面設(shè)計(jì)包含了歌曲界面,播放界面以及添加刪除界面等,主界面部分代碼如下:import java.io.File;import java.util.ArrayList;import .addmusic.b

48、a;import DAO.DBAdapter;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.widget.Spinner;import android.widget.TextView;import android.widget.AdapterView.OnItemClickListener;public class MainActivity extends Activity Button addmusic; ListView musi

49、clist; ListView leilist; ArrayList al=new ArrayList(); ArrayList al3=new ArrayList(); Spinner sp; Button searchbutton; DBAdapter db; EditText search; BaseAdapter ba; BaseAdapter ba2; Button fenlei; public static String musicname; public void onCreate(Bundle savedInstanceState) super.onCreate(savedIn

50、stanceState); setContentView(R.layout.main); addmusic=(Button) findViewById(R.id.addmusic); sp=(Spinner) findViewById(R.id.sp); searchbutton=(Button) findViewById(R.id.searchbutton); search=(EditText) findViewById(R.id.search); fenlei=(Button) findViewById(R.id.addfenlei); addmusic.setOnClickListene

51、r(new OnClickListener() public void onClick(View v) startActivity(new Intent(addmusic); ); fenlei.setOnClickListener(new OnClickListener() public void onClick(View v) startActivity(new Intent(addfenlei); ); musiclist=(ListView) findViewById(R.id.musiclist); leilist=(ListView) findViewById(R.id.leili

52、st); db=new DBAdapter(getApplicationContext(); db.open(); Cursor cursor=db.getmusic();2) 添加分類 主要是歌曲的分類,由于本人水平有限,本系統(tǒng)設(shè)計(jì)成了添加歌曲之前先添加分類。添加分類部分代碼如下:public class MainActivity extends Activity Button addmusic; ListView musiclist; ListView leilist; ArrayList al=new ArrayList(); ArrayList al3=new ArrayList();

53、 Spinner sp; Button searchbutton; DBAdapter db; EditText search; BaseAdapter ba; BaseAdapter ba2; Button fenlei; public static String musicname; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); addmusic=(Button) findViewById(R.id.addmusic); sp=(Spinner) findViewById(R.id.sp); searchbut

溫馨提示

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

評(píng)論

0/150

提交評(píng)論