基于Android系統(tǒng)的MIDI音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第1頁(yè)
基于Android系統(tǒng)的MIDI音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第2頁(yè)
基于Android系統(tǒng)的MIDI音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第3頁(yè)
基于Android系統(tǒng)的MIDI音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第4頁(yè)
基于Android系統(tǒng)的MIDI音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩51頁(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、內(nèi)蒙古科技大學(xué)本科生畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(畢業(yè)論文)題 目:基于android系統(tǒng)的midi音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn) 摘 要隨著3g時(shí)代的來(lái)臨,3g、android、iphone、google、蘋(píng)果、手機(jī)軟件、移動(dòng)開(kāi)發(fā)等詞越來(lái)越充斥于耳。隨著3g網(wǎng)絡(luò)的大規(guī)模建設(shè)和智能手機(jī)的迅速普及,移動(dòng)互聯(lián)網(wǎng)時(shí)代已經(jīng)微笑著迎面而來(lái)。自1983年世界第一款商用手機(jī)發(fā)布到現(xiàn)在,只經(jīng)過(guò)了僅僅不到30年的時(shí)間,全球手機(jī)用戶已達(dá)23億之多。消費(fèi)者對(duì)手機(jī)產(chǎn)品在商務(wù)和娛樂(lè)方面的要求越來(lái)越高,讓手機(jī)日益成為便攜式的商務(wù)或娛樂(lè)終端。在硬件的推動(dòng)下,用戶對(duì)手機(jī)軟件的功能需求也越來(lái)越高。android系統(tǒng)也在不斷更新以滿足需求,因此手機(jī)多

2、媒體技術(shù)的開(kāi)發(fā)也就不可避免稱為熱點(diǎn)。android:google公司于2007年公布的開(kāi)放式源代碼手機(jī)系統(tǒng),它的開(kāi)放性優(yōu)于其它封閉式的手機(jī)系統(tǒng),任何人都可能根據(jù)自己的喜好將手機(jī)系統(tǒng)中的所有功能重新編寫(xiě)。這使得越來(lái)越多的人關(guān)注這個(gè)操作系統(tǒng)。本設(shè)計(jì)為一款基于android 2.2 操作系統(tǒng)及以上版本的音樂(lè)播放器,以java作為基礎(chǔ)編程語(yǔ)言,采用android系統(tǒng)提供的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)sqlite進(jìn)行操作。本設(shè)計(jì)的實(shí)現(xiàn),囊括了android大部分編程技術(shù),用其友好的用戶界面,實(shí)現(xiàn)了對(duì)音樂(lè)控制的基本功能:播放、暫停、上/下首切換、歌詞同步顯示和各種播放模式的控制(單曲、循環(huán)、隨機(jī)和順序播放),也實(shí)現(xiàn)了對(duì)歌曲

3、列表的搜索、添加和刪除等功能。關(guān)鍵詞:android;google;音樂(lè)播放器;java;移動(dòng)互聯(lián)網(wǎng)abstractwith the coming of the era of 3g, some words can be heard more and more frequently, such as 3g, android, iphone, google, apple, mobile phone software, mobile development. as the 3g networks large-scale construction and the smart phones rapid

4、popularization, mobile internet age has come with a smile. since the issuance of the worlds first commercial mobile phone in 1983, the total number of global mobile phone users has been more than 2.3 billion in the past less than 30 years. consumers demand more and more mobile phones performance in

5、business and entertainment, which has made mobile phone the portable terminal for business and entertainment day by day. being motivated by hardware, users needs on mobile phone softwares function goes increasingly high. android system is updating to satisfy the needs. therefore, the development of

6、mobile multimedia technology has inevitably become the hot spot. android is the open source mobile system published by google in 2007. for the reason that its openness is superior to other closed mobile system, anyone can rewrite all functions in the mobile system as he or she like, which has made m

7、ore and more people pay attention to this operating system. this design is a music player using java as the basic programming language, which is based on android 2.2 operating system and above version, and can be operated by the standard database sqlite that offered by android system. though this de

8、sign is not big, it contents androids most programming technology. its favorable user interface can conduce to the realization of its basic function in music controlling (start, pause, switching between up and down music, lyrics synchronized display) and play mode controlling (single play, single cy

9、cle, random play and all cycle). besides, it also realizes the function in song including search, add, delete and so on. key words: android; google; music player; java; mobile internet目 錄摘 要iabstractii第一章緒 論11.1 設(shè)計(jì)背景及意義11.2 android國(guó)內(nèi)外發(fā)展的狀況1第二章 開(kāi)發(fā)工具相關(guān)簡(jiǎn)介32.1 android概述32.2 android開(kāi)發(fā)技術(shù)簡(jiǎn)介42.2.1 android程序

10、框架介紹42.2.2用戶界面介紹52.2.3 android四大組件簡(jiǎn)介62.2.4 android數(shù)據(jù)庫(kù)sqlite介紹72.3 java語(yǔ)言介紹8第三章 系統(tǒng)分析103.1可行性分析103.1.1操作可行性103.1.2經(jīng)濟(jì)可行性103.1.3技術(shù)可行性103.2設(shè)計(jì)目標(biāo)113.3功能需求分析123.3.1播放控制模塊分析123.3.2歌曲列表模塊分析133.3.2播放模式模塊分析143.4性能需求分析15第四章 總體設(shè)計(jì)164.1數(shù)據(jù)庫(kù)設(shè)計(jì)164.2基本流程設(shè)計(jì)174.2.1 整體流程設(shè)計(jì)174.2.2 播放控制流程設(shè)計(jì)174.2.3 歌曲列表流程設(shè)計(jì)184.2.4 播放模式流程設(shè)計(jì)19

11、第五章 詳細(xì)設(shè)計(jì)205.1 midi播放器ui設(shè)計(jì)205.1.1 歌曲列表界面設(shè)計(jì)215.1.2 播放控制界面設(shè)計(jì)235.2 播放器初始化實(shí)現(xiàn)255.3 歌曲列表模塊實(shí)現(xiàn)275.3.1 數(shù)據(jù)庫(kù)創(chuàng)建和連接實(shí)現(xiàn)275.3.2 歌曲列表搜索、添加和刪除實(shí)現(xiàn)295.4 播放控制和模式模塊實(shí)現(xiàn)325.4.1 基本控制功能實(shí)現(xiàn)325.4.2 ui同步顯示實(shí)現(xiàn)345.4.3播放模式控制實(shí)現(xiàn)355.5 歌詞同步顯示實(shí)現(xiàn)375.6 菜單功能實(shí)現(xiàn)42第六章 系統(tǒng)測(cè)試446.1 測(cè)試引言446.1.1測(cè)試目的446.1.2測(cè)試信息446.2 測(cè)試內(nèi)容456.2.1初始化測(cè)試456.2.2歌曲列表測(cè)試456.2.3播

12、放控制測(cè)試466.2.4歌詞同步顯示測(cè)試466.2.5搜索、添加和刪除測(cè)試47總 結(jié)48參考文獻(xiàn)49致 謝50第一章 緒論隨著android手機(jī)的普及,android應(yīng)用的需求勢(shì)必會(huì)越來(lái)越大,消費(fèi)者對(duì)手機(jī)產(chǎn)品在商務(wù)和娛樂(lè)方面的要求越來(lái)越高,讓手機(jī)日益成為便攜式的娛樂(lè)終端。其中媒體播放器也扮演著重要的角色,本設(shè)計(jì)的完成可以讓人們?cè)诿β档墓ぷ髦啵恍枰徊縜ndroid手機(jī),盡情的欣賞音樂(lè),緩解壓力。 1.1 設(shè)計(jì)背景及意義現(xiàn)今社會(huì)生活緊張,而欣賞音樂(lè)是其中最好的舒緩壓力的方式之一,本項(xiàng)目的目的是開(kāi)發(fā)一個(gè)可以播放主流音樂(lè)文件格式的播放器,本設(shè)計(jì)實(shí)現(xiàn)主要功能是播放mp3格式的音樂(lè)文件,并且能夠控制播

13、放、暫停、停止、上一曲、下一曲、音量調(diào)節(jié)、視覺(jué)外觀、播放列表的搜索、添加和刪除操作等多種播放控制功能,界面簡(jiǎn)明,操作簡(jiǎn)單。 本項(xiàng)目是一款基于android手機(jī)平臺(tái)的音樂(lè)播放器,使android手機(jī)擁有個(gè)性的多媒體播放器,使手機(jī)顯得更生動(dòng)靈活化,與人們更為接近,讓手機(jī)主人隨時(shí)隨地處于音樂(lè)視頻的旋律之中。使人們的生活更加多樣化。也使設(shè)計(jì)者更加熟練android的技術(shù)和其它在市場(chǎng)上的特點(diǎn)。1.2 android國(guó)內(nèi)外發(fā)展的狀況國(guó)外android市場(chǎng)正在如日中天的擴(kuò)展,據(jù)市場(chǎng)調(diào)研機(jī)構(gòu)npdgroup最近發(fā)布的一份報(bào)告稱,今年第一季度基于android操作系統(tǒng)的智能手機(jī)在美國(guó)智能手機(jī)總銷(xiāo)量中所占比例達(dá)到

14、28%,首度超越蘋(píng)果iphone,蘋(píng)果iphone約為21%,相信在不久的將來(lái)會(huì)有更多的用戶選擇android系統(tǒng)的手機(jī)或是無(wú)線終端設(shè)備。目前中國(guó)擁有世界上最大的手機(jī)用戶群,再加上3g的推出對(duì)整個(gè)行業(yè)的巨大推動(dòng)作用,全世界所有大中小型手機(jī)制造商幾乎都在招聘android工程師。然而每天有超過(guò)16萬(wàn)臺(tái)的android設(shè)備出貨,一年后全球可能會(huì)有超過(guò)1億臺(tái)的android設(shè)備,以后將有可能超越iphone成為智能手機(jī)平臺(tái)的旗艦。android在中國(guó)的前景十分廣闊,首先是有成熟的消費(fèi)者,android社區(qū)十分紅火,這些社區(qū)為android在中國(guó)的普及做了很好的推廣作用。國(guó)內(nèi)廠商和運(yùn)營(yíng)商也紛紛加入了a

15、ndroid陣營(yíng),包括中國(guó)移動(dòng)、中國(guó)聯(lián)通、中興通訊、華為通訊、聯(lián)想等大企業(yè),同時(shí)不僅僅局限于手機(jī),國(guó)內(nèi)廠家也陸續(xù)推出了采用android系統(tǒng)的mid產(chǎn)品,比較著名的包括由rock chip和藍(lán)魔推出的同時(shí)具備高清播放和智能系統(tǒng)的音悅匯w7和2010年推出的原道n5,我們可以預(yù)見(jiàn)android也將會(huì)被廣泛應(yīng)用在國(guó)產(chǎn)智能上網(wǎng)設(shè)備上,將進(jìn)一步擴(kuò)大android系統(tǒng)的應(yīng)用范圍。另一方面,由于國(guó)內(nèi)政策的限制,導(dǎo)致android的部分功能(如android market)在國(guó)內(nèi)無(wú)法正常使用,目前常用的解決方法是使用vpn服務(wù)來(lái)訪問(wèn)。第二章 開(kāi)發(fā)工具相關(guān)簡(jiǎn)介2.1 android概述android一詞本意是

16、指“機(jī)器人”,當(dāng)然現(xiàn)在大家都知道它是google推出的開(kāi)源手機(jī)操作系統(tǒng)。android基于linux平臺(tái),由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件。它是一個(gè)由30多家科技公司和手機(jī)公司組成的“開(kāi)放手機(jī)聯(lián)盟”共同研發(fā)的,這將大大降低新型手機(jī)設(shè)備的研發(fā)成本。完全整合的全移動(dòng)功能性產(chǎn)品成為“開(kāi)放手機(jī)聯(lián)盟”的最終目標(biāo)。android 平臺(tái)是 open handset alliance 的成果,open handset alliance 組織由一群共同致力于構(gòu)建更好的移動(dòng)電話的公司組成。這個(gè)組織由 google 領(lǐng)導(dǎo),包括移動(dòng)運(yùn)營(yíng)商、手持設(shè)備制造商、

17、零部件制造商、軟件解決方案和平臺(tái)提供商以及市場(chǎng)營(yíng)銷(xiāo)公司。從軟件開(kāi)發(fā)的觀點(diǎn)看,android 正處在開(kāi)源領(lǐng)域的中心位置。市場(chǎng)上第一款支持 android 的手機(jī)是由 htc 制造并由 t-mobile 供應(yīng)的 g1。這款設(shè)備從設(shè)想到推出花了大約一年的時(shí)間,惟一可用的軟件開(kāi)發(fā)工具是一些實(shí)行增量改進(jìn)的 sdk 發(fā)行版。隨著 g1 發(fā)行日的臨近,android 團(tuán)隊(duì)發(fā)布了 sdk v1.0,用于這個(gè)新平臺(tái)的應(yīng)用程序也浮出水面。為了鼓勵(lì)創(chuàng)新,google 舉辦了兩屆 “android developer challenges”,為優(yōu)勝的參賽作品提供數(shù)百萬(wàn)美金的獎(jiǎng)勵(lì)。g1 問(wèn)世幾個(gè)月之后,隨后就發(fā)布了an

18、droid market,它使用戶可以瀏覽應(yīng)用程序,并且可以將應(yīng)用程序直接下載到他們的手機(jī)上。經(jīng)過(guò)大約18 個(gè)月,一個(gè)新的移動(dòng)平臺(tái)進(jìn)入公眾領(lǐng)域。android操作系統(tǒng)是google最具殺傷力的武器之一。蘋(píng)果以其天才的創(chuàng)新,使得iphone在全球迅速擁有了數(shù)百萬(wàn)重視“粉絲”,而android作為第一個(gè)完整、開(kāi)放、免費(fèi)的手機(jī)平臺(tái),使開(kāi)發(fā)者在為其開(kāi)發(fā)程序時(shí)擁有更大的自由。與windows mobile、symbian等廠商不同的是,android操作系統(tǒng)免費(fèi)向開(kāi)發(fā)人員提供,這樣可節(jié)省近三成成本,得到了眾多廠商與開(kāi)發(fā)者的擁護(hù)。android系統(tǒng)具有如下5個(gè)特點(diǎn): 開(kāi)放性。google與開(kāi)放手機(jī)聯(lián)盟合作

19、開(kāi)發(fā)了android,google通過(guò)與運(yùn)營(yíng)商、設(shè)備制造商、開(kāi)發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望通過(guò)建立標(biāo)準(zhǔn)化、開(kāi)放式的移動(dòng)電話軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開(kāi)放式的生態(tài)系統(tǒng)。 應(yīng)用程序無(wú)極限。android上的應(yīng)用程序可以通過(guò)標(biāo)準(zhǔn)api訪問(wèn)核心移動(dòng)設(shè)備功能。通過(guò)互聯(lián)網(wǎng),應(yīng)用程序可以聲明它們的功能可供其他應(yīng)用程序使用。 應(yīng)用程序是在平等的條件下創(chuàng)建的。移動(dòng)設(shè)備上的應(yīng)用程序可以被替換或擴(kuò)展,即使是撥號(hào)程序或主屏幕這樣的核心組件。 應(yīng)用程序可以輕松地嵌入網(wǎng)絡(luò)。應(yīng)用程序可以輕松地嵌入html、javascript和樣式表,還可以通過(guò)web view顯示網(wǎng)絡(luò)內(nèi)容。 應(yīng)用程序可以并行運(yùn)行。

20、android是一種完整的多任務(wù)環(huán)境,應(yīng)用程序可以在其中并行運(yùn)行。在后臺(tái)運(yùn)行時(shí),應(yīng)用程序可以生成通知以引起注意。隨著android平臺(tái)的擴(kuò)張,引發(fā)了android人才荒,2010年移動(dòng)開(kāi)發(fā)人才需求20萬(wàn),未來(lái)人才需求缺口將達(dá)百萬(wàn)。3g人才全球緊缺,實(shí)用人才培養(yǎng)已迫在眉睫。在國(guó)內(nèi)三大運(yùn)營(yíng)商如火如荼的3g營(yíng)銷(xiāo)戰(zhàn)持續(xù)升溫,再加上3g的推出對(duì)整個(gè)行業(yè)的巨大推動(dòng)作用,無(wú)疑將引爆3g手機(jī)開(kāi)發(fā)工程師這個(gè)黃金職位。但符合條件的android工程師屈指可數(shù),在未來(lái)幾年內(nèi),android開(kāi)發(fā)工程師將成為3g行業(yè)炙手可熱的崗位之一。2.2 android開(kāi)發(fā)技術(shù)簡(jiǎn)介android支持使用java作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)

21、用程序,而android的java開(kāi)發(fā)方面從接口到功能,都有層出不窮的變化。考慮到j(luò)ava虛擬機(jī)的效率和資源占用,google重新設(shè)計(jì)了android的java,以便能提高效率和減少資源占用,因而與j2me等不同。本設(shè)計(jì)也是使用java語(yǔ)言設(shè)計(jì)與實(shí)現(xiàn)的。2.2.1 android程序框架介紹本節(jié)將介紹一下開(kāi)發(fā)android項(xiàng)目的項(xiàng)目目錄結(jié)構(gòu),如圖2.1所示,這是midi音樂(lè)播放器的項(xiàng)目目錄結(jié)構(gòu)。與一般的java項(xiàng)目一樣,src文件夾是項(xiàng)目的所有包及源文件(.java),res文件夾中則包含了項(xiàng)目中所有的資源,比如:程序圖標(biāo)(drawable)、布局文件(layout)、常量(values)等。

22、 r.java是在建立項(xiàng)目時(shí)自動(dòng)生成的,這個(gè)文件是只讀模式,不能更改,r.java是定義該項(xiàng)目所有資源的索引文件。 androidmanifest.xml文件則包含了該項(xiàng)目中所用的activity、service等組件,它是一個(gè)功能清單文件。圖2.1midi音樂(lè)播放器目錄結(jié)構(gòu)2.2.2用戶界面介紹android平臺(tái)提供的控件是非常完美的,控件的使用與網(wǎng)頁(yè)的設(shè)計(jì)類似。android的界面需要寫(xiě)在“res/layout”下面的布局文件,一般情況下,一個(gè)布局文件對(duì)應(yīng)一個(gè)界面。設(shè)計(jì)android的界面有點(diǎn)像寫(xiě)html代碼,要先給android定框架,然后再往里面添加控件。android生成屏幕有三種方

23、式:xml配置生成;通過(guò)用戶界面接口生成;直接用代碼生成。在一個(gè)android應(yīng)用中,用戶界面是由view和viewgroup對(duì)象構(gòu)建的。view和viewgroup都有很多種類,而它們都是view的子類。開(kāi)發(fā)者可以對(duì)view和viewgroup進(jìn)行組合,來(lái)完成應(yīng)用程序界面設(shè)計(jì)。1) view任何一個(gè)view對(duì)象都繼承android.view.view類。它是一個(gè)存儲(chǔ)屏幕上特定的一個(gè)矩形布局和內(nèi)容屬性的數(shù)據(jù)結(jié)構(gòu)。作為一個(gè)基類,view類為widget服務(wù),widget是一組用于繪制交互屏幕元素的完全實(shí)現(xiàn)子類。widget處理自己的測(cè)距和繪圖,所以可以快速地用它們?nèi)?gòu)建ui??捎玫降膚idget

24、包括text、edittext、button、radiobutton和checkbox等。2) viewgroupviewgroup是一個(gè)android.view.viewgroup類的對(duì)象。顧名思義,viewgroup是一個(gè)特殊的view對(duì)象,它的功能是裝載和管理一組下層的view和其他viewroup,viewgroup可以為ui增加結(jié)構(gòu),并且將復(fù)雜的屏幕元素構(gòu)建成一個(gè)獨(dú)立的實(shí)體。作為一個(gè)基類,viewgroup為layout(布局)服務(wù),layout則是一組提供屏幕界面通用類型的完全實(shí)現(xiàn)子類,一個(gè)activity界面可以包含多個(gè)viewgroup和view,,通過(guò)這樣的組合可以實(shí)現(xiàn)更復(fù)雜

25、、更完美、更滿足開(kāi)發(fā)者需要的界面。2.2.3 android四大組件簡(jiǎn)介本節(jié)介紹android非常重要的幾個(gè)組件,android有四大組件:activity、service、broadcast receiver、content provider。1) activity在android中使用頻率最高,實(shí)質(zhì)就是一個(gè)可視化界面;一般一個(gè)android應(yīng)用由多個(gè)activity組成,多個(gè)activity組成activity棧(stack),當(dāng)前活躍的activity在棧頂activity上面是一個(gè)window對(duì)象,window之上通常是一個(gè)布局容器對(duì)象(linearlayout等),在上面是我們所要展

26、示的各個(gè)組件(如按鈕、文本框等)activity有自己的生命周期,由android系統(tǒng)來(lái)控制新建的activity要在清單文件androidmanifest.xml中注冊(cè)。2) serviceservice顧名思義服務(wù),它和事件處理機(jī)制類似,只不過(guò)事件處理機(jī)制是程序組件級(jí)別的(例如,某個(gè)按鈕的單擊事件),而服務(wù)理機(jī)制是系統(tǒng)級(jí)別的,這個(gè)組件是沒(méi)有用戶界面的。到目前為止可以使用intent來(lái)啟動(dòng)一個(gè)程序組件,還可通過(guò)使用startservice()方法來(lái)發(fā)起啟動(dòng)一個(gè)程序中的服務(wù)。同時(shí)在應(yīng)用程序中實(shí)現(xiàn)service來(lái)監(jiān)聽(tīng)和響應(yīng)這些服務(wù)的intent。本應(yīng)用midi播放器對(duì)歌曲的控制全都做在了serv

27、ice里,后續(xù)會(huì)詳細(xì)說(shuō)明。3) broadcast receiver指廣播接收器,廣播事件處理機(jī)制是系統(tǒng)級(jí)別的系統(tǒng)中定義了很多標(biāo)準(zhǔn)的broadcast action來(lái)響應(yīng)系統(tǒng)廣播事件,如:action_boot_completed(系統(tǒng)啟動(dòng)完成后出發(fā)),action_battery_changed(電量低時(shí)出發(fā))也可以自定義broadcast receiver接收廣播事件注冊(cè)廣播接收器可以使用代碼注冊(cè),也可在清單文件androidmanifest.xml中注冊(cè)。4) content provider用來(lái)保存和檢索數(shù)據(jù)的,并且是應(yīng)用程序之間相互訪問(wèn)數(shù)據(jù)成為可能,他是跨應(yīng)用程序共享數(shù)據(jù)的唯一方法a

28、ndroid為常用的數(shù)據(jù)類型(如:視頻、音頻、圖片)提供了大量的content provider,它們被放在android. provider下面,使用時(shí)要注意權(quán)限問(wèn)題。2.2.4 android數(shù)據(jù)庫(kù)sqlite介紹sqlite第一個(gè)alpha版本誕生于2000年5月,它是一款輕型數(shù)據(jù)庫(kù),它的設(shè)計(jì)目的是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用,它占用的資源非常少,在嵌入式設(shè)備中,可能只需要幾百kb的內(nèi)存就夠了。也許這正是android系統(tǒng)要采用sqlite數(shù)據(jù)庫(kù)的原因之一。sqlite數(shù)據(jù)庫(kù)是d.richard hipp用c語(yǔ)言編寫(xiě)的開(kāi)源嵌入式數(shù)據(jù)庫(kù),支持的數(shù)據(jù)庫(kù)大小是2tb,sqlit

29、e是一個(gè)開(kāi)源的關(guān)系數(shù)據(jù)庫(kù),可以存儲(chǔ)大量數(shù)據(jù),并且可以很容易的進(jìn)行增刪改查。sqlite數(shù)據(jù)庫(kù)不像其他的數(shù)據(jù)庫(kù)(如oracle),它沒(méi)有服務(wù)器進(jìn)程。所有的內(nèi)容包含在同一個(gè)單個(gè)文件中。該文件是跨平臺(tái)的,可以自由復(fù)制?;谄渥陨淼南忍靸?yōu)勢(shì),sqlite在嵌入式領(lǐng)域得到廣泛應(yīng)用。android也沒(méi)有重復(fù)發(fā)明“輪子”,而是直接是用了sqlite數(shù)據(jù)庫(kù)。目前在 android 系統(tǒng)中集成的是 sqlite3 版本,sqlite不支持靜態(tài)數(shù)據(jù)類型,而是使用列關(guān)系。這意味著它的數(shù)據(jù)類型不具有表列屬性,而具有數(shù)據(jù)本身的屬性。當(dāng)某個(gè)值插入數(shù)據(jù)庫(kù)時(shí),sqlite將檢查它的類型。如果該類型與關(guān)聯(lián)的列不匹配,則 sql

30、ite 會(huì)嘗試將該值轉(zhuǎn)換成列類型。如果不能轉(zhuǎn)換,則該值將作為其本身具有的類型存儲(chǔ)。sqlite 支持null、integer 、real 、text 和blob 等數(shù)據(jù)類型。android提供了創(chuàng)建和使用sqlite數(shù)據(jù)庫(kù)的api。sqlitedatabase代表一個(gè)數(shù)據(jù)庫(kù)對(duì)象,提供了操作數(shù)據(jù)庫(kù)的一些方法,另外還有一個(gè)sqliteopenhelper工具類提供了更簡(jiǎn)潔的功能。在android的sdk目錄下有sqlite3工具,我們可以利用它創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表和執(zhí)行一些sql語(yǔ)句。關(guān)于這個(gè)sqliteopenhelper類在后續(xù)章節(jié)中會(huì)詳細(xì)講到,它的出現(xiàn)能夠更好地管理和維護(hù)數(shù)據(jù)庫(kù)。2.3 jav

31、a語(yǔ)言介紹java是一種簡(jiǎn)單的、跨平臺(tái)的、面向?qū)ο蟮?、分布式的、結(jié)實(shí)的、健壯的、安全的、結(jié)構(gòu)的、中立的、可移植的、性能很優(yōu)異的多線程的、動(dòng)態(tài)的語(yǔ)言。當(dāng)1995年sun推出java語(yǔ)言之后,全世界的目光都被這個(gè)神奇的語(yǔ)言所吸引。它最初被命名為oak,目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語(yǔ)言,來(lái)解決諸如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問(wèn)題。由于這些智能化家電的市場(chǎng)需求沒(méi)有預(yù)期的高,sun放棄了該項(xiàng)計(jì)劃。就在oak幾近失敗之時(shí),隨著互聯(lián)網(wǎng)的發(fā)展,sun看到了oak在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了oak,以“java”的名稱正式發(fā)布。 java 編程語(yǔ)言的風(fēng)格十分接近c(diǎn)、c+語(yǔ)

32、言。java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它繼承了c+語(yǔ)言面向?qū)ο蠹夹g(shù)的核心,java舍棄了c +語(yǔ)言中容易引起錯(cuò)誤的指針(以引用取代)、運(yùn)算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。在 java se 1.5 版本中,java 又引入了泛型編程(generic programming)、類型安全的枚舉、不定長(zhǎng)度參數(shù)和自動(dòng)裝/拆箱等語(yǔ)言特性。java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(byte code),

33、然后依賴各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過(guò),每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了java 程序的運(yùn)行效率。但在j2se 1.4.2 發(fā)布后,java 的執(zhí)行速度有了大幅提升。與傳統(tǒng)程序不同,sun公司在推出java 之際就將其作為一種開(kāi)放的技術(shù)。全球數(shù)以萬(wàn)計(jì)的java開(kāi)發(fā)公司被要求所設(shè)計(jì)的java 軟件必須相互兼容?!癹ava語(yǔ)言靠群體的力量而非公司的力量”是 sun 公司的口號(hào)之一,并獲得了廣大軟件開(kāi)發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。sun 公司對(duì) java 編程語(yǔ)言的解釋是:jav

34、a 編程語(yǔ)言是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語(yǔ)言。java 平臺(tái)是基于java 語(yǔ)言的平臺(tái)。這樣的平臺(tái)目前非常流行,因此微軟公司推出了與之競(jìng)爭(zhēng)的.net平臺(tái)以及模仿 java 的c#語(yǔ)言。android google選擇用java語(yǔ)言作為它十分流行的android移動(dòng)操作系統(tǒng)的編程語(yǔ)言。這個(gè)選擇在整個(gè)件研發(fā)人員的社區(qū)中引起了新的關(guān)注。android程序編譯過(guò)程比普通java程序要多經(jīng)過(guò)一個(gè)步驟,將jvm二進(jìn)制碼轉(zhuǎn)換成 dalvik二進(jìn)制碼。google 已經(jīng)可以利用eclipse 為軟件研發(fā)人員提供一個(gè)成熟的編寫(xiě)android應(yīng)用的開(kāi)發(fā)環(huán)

35、境。android支持使用java作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序,而android的java開(kāi)發(fā)方面從接口到功能,都有層出不窮的變化。考慮到j(luò)ava虛擬機(jī)的效率和資源占用,google重新設(shè)計(jì)了android的java,以便能提高效率和減少資源占用。第三章 系統(tǒng)分析3.1可行性分析3.1.1操作可行性隨著時(shí)代的發(fā)展,3g時(shí)代已經(jīng)來(lái)臨,人們對(duì)于手機(jī)的操作已經(jīng)很熟練了,而對(duì)于android手機(jī),更是由于簡(jiǎn)單的操作,行云流水的觸摸感覺(jué),已經(jīng)贏得了世人的青睞。對(duì)于本應(yīng)用而言,操作方面不對(duì)存在障礙,簡(jiǎn)潔大方的用戶界面設(shè)計(jì),只需用戶輕輕點(diǎn)擊,即可完成所有的對(duì)音樂(lè)播放的控制等操作。3.1.2經(jīng)濟(jì)可行性本系統(tǒng)開(kāi)發(fā)

36、經(jīng)費(fèi)在經(jīng)濟(jì)上是可以接受的,現(xiàn)在電腦和手機(jī)已經(jīng)普及,而手機(jī)更是人人都擁有,而android手機(jī)更是主流手機(jī),在市面上一般的android系統(tǒng)手機(jī)的價(jià)錢(qián)都在千元左右,所示說(shuō)價(jià)錢(qián)并不是很昂貴。其開(kāi)發(fā)軟件在目前來(lái)說(shuō)全部都是免費(fèi)的。所以本應(yīng)用在經(jīng)濟(jì)上是可行的。3.1.3技術(shù)可行性android作為第一個(gè)完整、開(kāi)放、免費(fèi)的手機(jī)平臺(tái),android也為開(kāi)發(fā)者提供了完整的api,使開(kāi)發(fā)者在為其開(kāi)發(fā)程序時(shí)擁有更大的自由。只要開(kāi)發(fā)者有一個(gè)比較全面的java基礎(chǔ),以及一些簡(jiǎn)單的xml技術(shù),對(duì)軟件的開(kāi)發(fā)流程有一定的了解,在開(kāi)發(fā)android程序的時(shí)候一般是不會(huì)有太大的問(wèn)題的。只需搭建android開(kāi)發(fā)必要的開(kāi)發(fā)環(huán)境就

37、可以了,本應(yīng)用選擇的開(kāi)發(fā)工具eclispe+jdk+android插件adt。所以開(kāi)發(fā)者想進(jìn)行android開(kāi)發(fā),準(zhǔn)備工作其實(shí)是很簡(jiǎn)單的。本應(yīng)用選擇eclipse,配合android開(kāi)發(fā)插件adt,只需運(yùn)行一個(gè)android virtual device(avd),就可以進(jìn)行開(kāi)發(fā)和調(diào)試的工作,如圖3.1所示,這是一個(gè)android virtual device(avd)。綜上所述,本應(yīng)用在技術(shù)上是可行的。圖3.1andoid模擬器(avd)3.2設(shè)計(jì)目標(biāo)現(xiàn)今社會(huì)生活緊張,而欣賞音樂(lè)是其中最好的舒緩壓力的方式之一,本項(xiàng)目的目的是開(kāi)發(fā)一個(gè)可以播放主流音樂(lè)文件格式的播放器,midi音樂(lè)播放器的實(shí)現(xiàn)的

38、這主要功能是播放主流格式的音樂(lè)文件,并且能夠控制播放、暫停、上一曲、下一曲、進(jìn)度條控制,視覺(jué)外觀,播放列表和歌曲列表的操作等多種播放控制功能,界面簡(jiǎn)明,操作簡(jiǎn)單。 本項(xiàng)目是一款基于android手機(jī)平臺(tái)的音樂(lè)播放器,使android手機(jī)擁有個(gè)性的多媒體播放器,使手機(jī)顯得更生動(dòng)靈活化,與人們更為接近,讓手機(jī)主人隨時(shí)隨地處于音樂(lè)視頻的旋律之中,使人們的生活更加多樣化。在國(guó)內(nèi)三大運(yùn)營(yíng)商如火如荼的3g營(yíng)銷(xiāo)戰(zhàn)持續(xù)升溫,再加上3g的推出對(duì)整個(gè)行業(yè)的巨大推動(dòng)作用,無(wú)疑將引爆3g手機(jī)開(kāi)發(fā)工程師這個(gè)黃金職位。但符合條件的android工程師屈指可數(shù),在未來(lái)幾年內(nèi),android開(kāi)發(fā)工程師將成為3g行業(yè)炙手可熱的

39、崗位之一。midi音樂(lè)播放器的另外一個(gè)設(shè)計(jì)目標(biāo)就是讓自己更加系統(tǒng)的去熟悉和學(xué)習(xí)android開(kāi)發(fā)技術(shù)的相關(guān)知識(shí),為以后開(kāi)發(fā)android程序打下良好的基礎(chǔ)。3.3功能需求分析根據(jù)播放器的實(shí)現(xiàn)目標(biāo),可獲得播放器的基本需求,以下從不同角度來(lái)描述系統(tǒng)的需求,系統(tǒng)的功能需求,分成三部分來(lái)概括,即播放器的基本控制需求,播放列表管理需求和播放器友好性需求,如圖3.2所示為應(yīng)用功能需求結(jié)構(gòu)圖分析。 圖3.2 midi播放器功能結(jié)構(gòu)圖3.3.1播放控制模塊分析音樂(lè)播放器對(duì)于大家來(lái)說(shuō)可以說(shuō)是不陌生了,對(duì)于播放器的控制要求大家也是更加熟悉了。本應(yīng)用對(duì)播放器的基本控制也全部得到了實(shí)現(xiàn),例如:暫停、上一首、下一首和播

40、放時(shí)間的同步顯示等,如圖3.3所示播放器的基本控制功能用例圖分析。 圖3.3播放器的基本控制功能用例圖3.3.2歌曲列表模塊分析midi音樂(lè)播放器設(shè)計(jì)兩個(gè)歌曲列表,一個(gè)列表顯示所有音樂(lè),另外一個(gè)列表顯示用戶自己喜歡并且自己添加的音樂(lè),如圖3.4所示,應(yīng)有的需求有:1) 添加音樂(lè)功能:用戶可以添加自己喜歡的音樂(lè)于另外一個(gè)列表。2) 刪除音樂(lè)功能:用戶可以刪除自己添加的歌曲。3) 搜索音樂(lè)功能:用戶對(duì)兩個(gè)列表中的歌曲進(jìn)行搜索操作。4) 播放列表中的歌曲:用戶瀏覽列表,并且可以播放選中的歌曲。圖3.4歌曲列表模塊用例圖3.3.2播放模式模塊分析midi音樂(lè)播放器播放模式模塊應(yīng)有的需求:循環(huán)播放、隨機(jī)

41、播放、順序播放和單曲循環(huán)的開(kāi)啟與關(guān)閉,如圖3.5所示。圖3.5播放模式模塊用例圖3.4性能需求分析根據(jù)android手機(jī)系統(tǒng)要求無(wú)響應(yīng)時(shí)間為5秒,所以就有如下性能要求: 當(dāng)要求歌曲播放時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。 當(dāng)要求歌曲暫停時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。 當(dāng)要求添加或刪除歌曲時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。 當(dāng)要求歌曲上/下一首時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。 當(dāng)要求進(jìn)行列表切換時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò)5秒。第四章 總體設(shè)計(jì)4.1數(shù)據(jù)庫(kù)設(shè)計(jì)midi音樂(lè)播放器使用的是android系統(tǒng)內(nèi)置的sqlite數(shù)據(jù)庫(kù),對(duì)于sqlite數(shù)據(jù)庫(kù)的介紹詳見(jiàn)2.2.4節(jié)。android系統(tǒng)

42、為開(kāi)發(fā)者提供了一個(gè)mediastore這個(gè)類,它是一個(gè)多媒體數(shù)據(jù)庫(kù),android中多媒體信息都可以從這里提取。這個(gè)mediastore包括了多媒體數(shù)據(jù)庫(kù)的所有信息,包括音頻,視頻和圖像等。存放媒體信息如title(標(biāo)題)、artist(藝術(shù)家)、album(專輯封面)、size(大小)和data(路徑)等字段。midi音樂(lè)播放器數(shù)據(jù)庫(kù)設(shè)計(jì)階段,只需要兩張表,第一張表存放所有的歌曲信息(即mediastore類,只需通過(guò)uri:external_content_uri來(lái)訪問(wèn),就可以得到想要的歌曲信息字段,midi音樂(lè)播放器用到的字段有:_id(歌曲id)、title(標(biāo)題)、artist(藝術(shù)

43、家)、data(路徑)、album(專輯封面)、duration(歌曲時(shí)間)和album_id(專輯封面id)。第二張表favourite存放于自己創(chuàng)建的mymusic.db數(shù)據(jù)庫(kù)中,用于存放用戶自己添加歌曲的信息,如表4.1所示。表4.1我的音樂(lè)表(favourite)字段名稱數(shù)據(jù)類型允許空說(shuō)明_idintegernot null主鍵music_idintegernot null歌曲idmusic_nametextnot null歌曲名字music_aristtext演唱者music_pathtextnot null路徑music_abluminteger專輯封面idmusic_timein

44、tegernot null歌曲長(zhǎng)度4.2基本流程設(shè)計(jì)4.2.1 整體流程設(shè)計(jì) midi音樂(lè)播放器整體流程,如圖4.2所示。圖4.2midi音樂(lè)播放器系統(tǒng)流程圖4.2.2 播放控制流程設(shè)計(jì) 播放控制模塊是整個(gè)設(shè)計(jì)控制的核心部分,用戶只需通過(guò)簡(jiǎn)單的觸摸操作就可以實(shí)現(xiàn)對(duì)歌曲播放的控制,如圖4.3所示。圖4.3播放控制模塊流程圖4.2.3 歌曲列表流程設(shè)計(jì) midi音樂(lè)播放器在初始化界面時(shí),從系統(tǒng)數(shù)據(jù)庫(kù)獲得sd內(nèi)所有音樂(lè)信息;從數(shù)據(jù)庫(kù)mymusic.db數(shù)據(jù)庫(kù)獲取用戶添加的音樂(lè)的信息,將這些得到的信息構(gòu)建到列表呈現(xiàn)給用戶,如果這是用戶第一次運(yùn)行midi音樂(lè)播放器,程序?qū)⑿陆╩ymusic.db數(shù)據(jù)庫(kù)。

45、掃描完歌曲文件后,掃描/sdcard/目錄下的所有以.lrc為后綴的歌詞文件并且存儲(chǔ)文件名和文件的絕對(duì)路徑。如果mymusic.db數(shù)據(jù)庫(kù)中有數(shù)據(jù),就可以對(duì)mymusic.db數(shù)據(jù)庫(kù)進(jìn)行查詢、添加和刪除操作,然后刷新列表信息,這一模塊的流程如圖4.4所示。圖4.4歌曲列表操作流程圖4.2.4 播放模式流程設(shè)計(jì) 播放模式控制即循環(huán)播放、隨機(jī)播放、順序播放和單曲循環(huán),其中前三種播放模式采用循環(huán)切換的模式進(jìn)行選擇,單曲循環(huán)獨(dú)立開(kāi)來(lái),進(jìn)行開(kāi)啟或者關(guān)閉,如圖4.5所示。圖4.5播放模式流程圖第五章 詳細(xì)設(shè)計(jì)5.1 midi播放器ui設(shè)計(jì)對(duì)于android來(lái)說(shuō),一個(gè)好的應(yīng)用界面的必備條件是:內(nèi)容清晰、指示

46、明白、屏幕美觀和有親切感。ui通常包含圖形和文字,應(yīng)用界面的設(shè)計(jì)是對(duì)控件進(jìn)行適當(dāng)?shù)娜∩峒肮δ艿倪x擇和處理的過(guò)程(對(duì)控件進(jìn)行事件監(jiān)聽(tīng))。在midi播放器的設(shè)計(jì)過(guò)程中,也是對(duì)設(shè)計(jì)的方法進(jìn)行反復(fù)的推敲、琢磨,才能使其達(dá)到完美的境界,midi播放器界面的整體風(fēng)格為經(jīng)典的黑白色調(diào),界面設(shè)計(jì)更簡(jiǎn)潔,更大方。android的界面寫(xiě)在“res/layout”下面的布局文件中,一般情況下,一個(gè)布局文件對(duì)應(yīng)一個(gè)界面,如圖5.1所示,這是midi播放器所有的布局文件。雖然android生成屏幕的方有三種(第二章已介紹),但是一般使用xml文件配置生成,這里有必要說(shuō)一下,其實(shí)android界面的代碼編寫(xiě)有點(diǎn)像html

47、,添加框架,編寫(xiě)代碼,生成控件。midi音樂(lè)播放器的每一個(gè)可視化界面,都有其的唯一的布局配置文件,該文件里面有各種布局方式:線性布局(linear layout)和相對(duì)布局(relative layout)等,通過(guò)各種資源文件如圖像,文字,顏色的引用,和這幾種布局的完美組合,這樣就形成了midi播放器不同的可視化界面和絢爛的效果。下面我詳細(xì)介紹播放器中的幾個(gè)重要布局配置文件的設(shè)計(jì)和實(shí)現(xiàn)。圖5.1midi播放器布局文件5.1.1 歌曲列表界面設(shè)計(jì) 在程序初始化后,呈現(xiàn)給用戶的界面就是歌曲列表界面,如圖5.2所示。圖5.2歌曲列表界面歌曲列表界面實(shí)現(xiàn)了線性布局(linear layout)和相對(duì)布

48、局(relative layout)的相互嵌套,歌曲信息通過(guò)listview控件顯示,它以列表的形式展示具體內(nèi)容,并且能夠根據(jù)數(shù)據(jù)的長(zhǎng)度自適應(yīng)顯示,實(shí)現(xiàn)代碼如下所示。在歌曲播放列表使用了slidingdrawer(滑動(dòng)式抽屜)這個(gè)控件,slidingdrawer隱藏屏外的內(nèi)容,并允許用戶通過(guò)handle以顯示隱藏內(nèi)容,將播放控制界面放在了這個(gè)隱藏內(nèi)容中,它可以垂直或水平滑動(dòng),布局代碼實(shí)現(xiàn)如下所示。有時(shí)android自帶的slidingdrawer控件不能滿足開(kāi)發(fā)者的需求,重寫(xiě)slidingdrawer這個(gè)控件,將會(huì)為整個(gè)系統(tǒng)的界面布局增色不少,重寫(xiě)實(shí)現(xiàn)代碼如下所示。 /* * 獲取控件的屏幕區(qū)

49、域 */ public rect getrectonscreen(view view) rect rect = new rect(); int location = new int2; view parent = view; if(view.getparent() instanceof view) parent = (view)view.getparent(); parent.getlocationonscreen(location); view.gethitrect(rect); rect.offset(location0, location1); return rect; public boolean onintercepttouchevent(motionevent event) / 觸摸位置轉(zhuǎn)換為屏幕坐標(biāo) int location = new int2; int x = (int)event.getx(); int y = (i

溫馨提示

  • 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)論