andriod-音樂播放器學(xué)士學(xué)位畢業(yè)論文_第1頁
andriod-音樂播放器學(xué)士學(xué)位畢業(yè)論文_第2頁
andriod-音樂播放器學(xué)士學(xué)位畢業(yè)論文_第3頁
andriod-音樂播放器學(xué)士學(xué)位畢業(yè)論文_第4頁
andriod-音樂播放器學(xué)士學(xué)位畢業(yè)論文_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

摘要當(dāng)今社會的生活節(jié)奏越來越快,隨著硬件移動設(shè)備的越來越先進(jìn),人們對移動設(shè)備的要求也越來越高,從以前的追求技術(shù)到現(xiàn)在的追求視覺,因此,也逐步的提高了對系統(tǒng)的要求,本文主要是對Android系統(tǒng)上音樂播放器應(yīng)用程序的設(shè)計與實(shí)現(xiàn)進(jìn)行討論。本論文的音樂播放器采用了Android開源系統(tǒng)技術(shù),利用Java語言和Eclipse編輯工具對播放器進(jìn)行編寫,同時給出了詳細(xì)的系統(tǒng)設(shè)計過程、部分界面圖及主要功能運(yùn)行流程圖,本文還對開發(fā)過程中遇到的問題和解決方法進(jìn)行了詳細(xì)的討論,該音樂播放器集播放、暫停、停止、上一首、下一首、音量調(diào)節(jié)、歌詞顯示等功能于一體,性能良好,在Android系統(tǒng)中能獨(dú)立運(yùn)行。該播放器還擁有對手機(jī)文件瀏覽器的訪問功能、歌曲播放模式、以及歌詞開閉狀態(tài)的友好設(shè)置。通過對基于Android平臺下的播放器的設(shè)計,了解音樂播放器的設(shè)計的原理和實(shí)現(xiàn)的相關(guān)技術(shù),掌握了Android編程思想以及基本的應(yīng)用組件,對以后從事Android開發(fā)有很大的幫助。關(guān)鍵字:Android;開源系統(tǒng);音樂播放器;JavaAbstractIntoday'ssocietypaceoflifemoreandmorequickly,withhardwaremobiledevicesarebecomingmoreandmoreadvanced,peopleonmobileequipmentrequirementsareincreasinglyhigh,fromtheformerthepursuitoftechnologytopresentthepursuitofvision,therefore,itisalsograduallyimprovethesystemrequirements,thispaperismainlytotheAndroidsystemmusicplayerapplicationsdesignandimplementationarediscussed.InthispaperthemusicplayerusingtheAndroidopensourcesystemtechnology,theuseofJavaandEclipseeditingtoolforplayerstowrite,andatthesametime,givesthedetailedsystemdesignprocess,partoftheinterfacediagramandmainfunctionoperationflowdiagram,thispaperalsoonthedevelopmentprocessmetthequestionandthesolutionmethodsarediscussedindetail,thismusicplayersetplay,pause,stop,a,a,volumecontrol,lyricsdisplayfunctionatanorganicwhole,theperformancegood,inAndroidsystemcanoperateindependently.Theplayerhastomobilephonefilebrowseraccessfunction,songsplaymode,andthelyricsopenclosefriendlySettings.ThroughtheAndroidplatformbasedonthedesignoftheplayer,understandingthemusicplayer,thedesignprincipleandimplementationofrelatedtechnologies,mastertheAndroidprogrammingthoughtandbasicapplicationcomponents,forfuturedevelopmentinAndroidwillbeofgreathelp.Keyword:Android;Opensourcesystem;Musicplayer;JAVA畢業(yè)論文(設(shè)計)原創(chuàng)性聲明本人所呈交的畢業(yè)論文(設(shè)計)是我在導(dǎo)師的指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。據(jù)我所知,除文中已經(jīng)注明引用的內(nèi)容外,本論文(設(shè)計)不包含其他個人已經(jīng)發(fā)表或撰寫過的研究成果。對本論文(設(shè)計)的研究做出重要貢獻(xiàn)的個人和集體,均已在文中作了明確說明并表示謝意。作者簽名:日期:畢業(yè)論文(設(shè)計)授權(quán)使用說明本論文(設(shè)計)作者完全了解**學(xué)院有關(guān)保留、使用畢業(yè)論文(設(shè)計)的規(guī)定,學(xué)校有權(quán)保留論文(設(shè)計)并向相關(guān)部門送交論文(設(shè)計)的電子版和紙質(zhì)版。有權(quán)將論文(設(shè)計)用于非贏利目的的少量復(fù)制并允許論文(設(shè)計)進(jìn)入學(xué)校圖書館被查閱。學(xué)??梢怨颊撐模ㄔO(shè)計)的全部或部分內(nèi)容。保密的論文(設(shè)計)在解密后適用本規(guī)定。

作者簽名:指導(dǎo)教師簽名:日期:日期:

注意事項(xiàng)1.設(shè)計(論文)的內(nèi)容包括:1)封面(按教務(wù)處制定的標(biāo)準(zhǔn)封面格式制作)2)原創(chuàng)性聲明3)中文摘要(300字左右)、關(guān)鍵詞4)外文摘要、關(guān)鍵詞5)目次頁(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論)、正文、結(jié)論7)參考文獻(xiàn)8)致謝9)附錄(對論文支持必要時)2.論文字?jǐn)?shù)要求:理工類設(shè)計(論文)正文字?jǐn)?shù)不少于1萬字(不包括圖紙、程序清單等),文科類論文正文字?jǐn)?shù)不少于1.2萬字。3.附件包括:任務(wù)書、開題報告、外文譯文、譯文原文(復(fù)印件)。4.文字、圖表要求:1)文字通順,語言流暢,書寫字跡工整,打印字體及大小符合要求,無錯別字,不準(zhǔn)請他人代寫2)工程設(shè)計類題目的圖紙,要求部分用尺規(guī)繪制,部分用計算機(jī)繪制,所有圖紙應(yīng)符合國家技術(shù)標(biāo)準(zhǔn)規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準(zhǔn)用徒手畫3)畢業(yè)論文須用A4單面打印,論文50頁以上的雙面打印4)圖表應(yīng)繪制于無格子的頁面上5)軟件工程類課題應(yīng)有程序清單,并提供電子文檔5.裝訂順序1)設(shè)計(論文)2)附件:按照任務(wù)書、開題報告、外文譯文、譯文原文(復(fù)印件)次序裝訂3)其它

目錄TOC\o"1-2"\h\u11848第一章引言 33521.1.選題目的及意義 359351.2.項(xiàng)目背景 420204第二章系統(tǒng)需求分析 422762.1.功能需求 444512.2.系統(tǒng)界面需求 717622.3.系統(tǒng)性能需求 889312.4.運(yùn)行環(huán)境需求 87448第三章安卓項(xiàng)目介紹 9145253.1.安卓簡介及優(yōu)點(diǎn) 9102833.2.搭建安卓開發(fā)環(huán)境 10120923.3.Andriod音樂播放器項(xiàng)目工程設(shè)計 121192第四章安卓數(shù)據(jù)庫設(shè)計 16175284.1.數(shù)據(jù)庫及字段屬性 1612814.2.數(shù)據(jù)庫連接 1817131第五章播放器系統(tǒng)功能的實(shí)現(xiàn) 20195355.1.播放器主界面功能實(shí)現(xiàn) 20250055.2.播放列表顯示 27235885.3.菜單功能實(shí)現(xiàn) 2839625.4.播放界面實(shí)現(xiàn) 29220085.5.歌詞顯示 30181565.6.手機(jī)擴(kuò)展卡的訪問 3113558第六章系統(tǒng)測試 3215766第七章總結(jié) 33引言選題目的及意義當(dāng)今社會的生活節(jié)奏越來越快,人們對手機(jī)的要求也越來越高,由于手機(jī)市場發(fā)展迅速,使得手機(jī)操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場上主要有三個手機(jī)操作系統(tǒng)有塞班S60、wp7、IOS以及谷歌的Android操作系統(tǒng),其中占有開放源代碼優(yōu)勢的Android系統(tǒng)有最大的發(fā)展前景。那么能否在手機(jī)上擁有自己編寫的個性音樂播放器,為個人喜好來設(shè)計播放器的界面和布局來娛樂自己?能的,Android系統(tǒng)就能做到。本文的音樂播放器就是基于Android手機(jī)平臺編寫的播放器。項(xiàng)目背景隨著計算機(jī)的廣泛運(yùn)用,手機(jī)市場的迅速發(fā)展,各種音頻視頻資源也在網(wǎng)上廣為流傳,這些資源看似平常,但已經(jīng)漸漸成為人們生活中必不可少的一部分了。于是各種手機(jī)播放器也緊跟著發(fā)展起來,但是很多播放器一味追求外觀花哨,功能龐大,對用戶的手機(jī)造成了很多資源浪費(fèi),比如CPU,內(nèi)存等的占用率過高,在用戶需要多任務(wù)操作時,受到了不小的影響,帶來了許多不便,而對于大多數(shù)普通用戶,許多功能用不上,形同虛設(shè)。針對以上各種弊端,選擇了開發(fā)多語種的音頻視頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,滿足一般用戶(如聽歌,看電影)的需求,除了能播放常見格式的語音視頻文件,高級功能:還能播放RMVB格式的視頻文件。此外,還能支持中文、英文等語言界面。要研究了各種市場上流行的手機(jī)播放器,了解它們各自的插件及編碼方式,還有各種播放器播放的特別格式文件,分析各種編碼的優(yōu)缺點(diǎn)以及各種播放器本身存在的缺陷和特點(diǎn),編寫出功能實(shí)用,使用方便快捷的播放器。目前已經(jīng)實(shí)現(xiàn)的功能有能播放常見音頻文件的功能,如MP3,WAV等,擁有播放菜單,能選擇播放清單,具備一般播放器的功能,如快進(jìn),快退,音量調(diào)節(jié)等。播放模式也比較完善,有單曲,順序,循環(huán),隨機(jī)播放等模式。系統(tǒng)需求分析功能需求根據(jù)項(xiàng)目的目標(biāo),我們可獲得項(xiàng)目系統(tǒng)的基本需求,以下從不同角度來描述系統(tǒng)的需求,并且使用用例圖來描述,系統(tǒng)的功能需求,我們分成四部分來概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器擴(kuò)展卡需求。以例圖表示以下分別描述:播放器控制需求功能需求定義了開發(fā)人員必須實(shí)現(xiàn)的軟件功能。用戶需求文檔描述了用戶使用產(chǎn)品必須要完成的任務(wù)。如圖2-1所示:圖2-1如上圖2-1所示:本軟件主界面用戶功能控制需求有播放、暫停、停止、上一曲、下一期、音量控制、靜音控制、界面歌詞顯示、進(jìn)入播放清單、播放文件、退出功能。當(dāng)用戶選中某一首歌曲的時候操作功能如圖2-2所示:圖2-2如圖2-2所示:當(dāng)用戶需要對特定某首歌曲進(jìn)行操作時,播放器提供的功能有播放、詳細(xì)屬性、加入鈴聲庫、增加歌曲、從播放器音樂列表移除、把全部歌曲從音樂列表中移除、進(jìn)入設(shè)定界面功能。循環(huán)播放友好型有三種:單曲循環(huán)、順序循環(huán)和隨機(jī)循環(huán)。如下圖所示:循環(huán)播放單曲循環(huán)循環(huán)播放單曲循環(huán)順序循環(huán)隨機(jī)循環(huán)循環(huán)播放單曲循環(huán)順序循環(huán)隨機(jī)循環(huán)圖2.3播放器擴(kuò)展卡需求播放器擴(kuò)展卡需求是用戶對播放器音樂對手機(jī)的文件瀏覽器的需求。文件瀏覽器可以搜尋手機(jī)音樂、SD卡音樂。目標(biāo)是手機(jī)和內(nèi)存卡上的mp3格式或WAV格式的音樂文件。如圖2.4所示:圖2.4系統(tǒng)界面需求用戶界面是一個應(yīng)用程序很重要的一面——它直接影響程序的使用價值。對于大多數(shù)用戶來說,用戶界面就是他們對一個產(chǎn)品的大致的了解。所以對他們來說,一個內(nèi)部設(shè)計良好但用戶界面不好的應(yīng)用程序就是一個不好的程序。說到底一句話:一個優(yōu)秀的用戶界面即是一個直觀的、對用戶透明的界面:用戶在首次接觸了這個軟件后就覺得一目了然,不需要多少培訓(xùn)就可以方便地上手使用,而且用戶在使用過程中甚至?xí)@得愉悅快樂的心情。說起來很簡單,可是在實(shí)際開發(fā)中,真正能夠做到這一點(diǎn)卻很不容易的。為了減少工作量本播放器界面為個人項(xiàng)目設(shè)計素材。播放器主界面如圖2.5所示:圖2.5系統(tǒng)性能需求根據(jù)Android手機(jī)系統(tǒng)要求無響應(yīng)時間為5秒,所以就有如下性能要求:當(dāng)要求歌曲播放時,程序響應(yīng)時間最長不能超過5秒當(dāng)要求歌曲暫停時,程序響應(yīng)時間最長不能超過5秒當(dāng)要求歌曲停止時,程序響應(yīng)時間最長不能超過5秒當(dāng)要求歌曲上/下一首時,程序響應(yīng)時間最長不能超過5秒當(dāng)要求進(jìn)行清單列表時,程序響應(yīng)時間最長不能超過5秒運(yùn)行環(huán)境需求操作系統(tǒng):Android手機(jī)基于Linux操作系統(tǒng)支持環(huán)境:Android2.0.3-4.0.0版本開發(fā)環(huán)境:Eclipse3.5ADT0.95第三章安卓項(xiàng)目介紹安卓簡介及優(yōu)點(diǎn)安卓簡介圖3.1Android一詞的本義指“機(jī)器人”,如上圖3.1所示。同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。Android是基于Linux內(nèi)核的軟件平臺和操作系統(tǒng),早期由Google開發(fā)(在華注冊商標(biāo)名為“安致”),后由開放手機(jī)聯(lián)盟(OpenHandsetAlliance)開發(fā)。它采用了軟件堆層(softwarestack,又名以軟件疊層)的架構(gòu),主要分為三部分。低層以Linux內(nèi)核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。另外,為了推廣此技術(shù),Google和其它幾十個手機(jī)公司建立了開放手機(jī)聯(lián)盟。2010年10月份,谷歌宣布Android系統(tǒng)達(dá)到了第一個里程碑,即電子市場上獲得官方數(shù)字認(rèn)證的Android應(yīng)用數(shù)量已經(jīng)達(dá)到了10萬個,Android系統(tǒng)的應(yīng)用增長非常迅速。在2010年12月,谷歌正式發(fā)布了Android2.3操作系統(tǒng)Gingerbread(姜餅)。2011年1月,谷歌稱每日的Android設(shè)備新用戶數(shù)量達(dá)到了30萬部,到2011年7月,這個數(shù)字增長到55萬部,而Android系統(tǒng)設(shè)備的用戶總數(shù)達(dá)到了1.35億,Android系統(tǒng)已經(jīng)成為智能手機(jī)領(lǐng)域占有量最高的系統(tǒng)。2011年8月2日,Android手機(jī)已占據(jù)全球智能機(jī)市場48%的份額,并在亞太地區(qū)市場占據(jù)統(tǒng)治地位,終結(jié)了Symbian(塞班系統(tǒng))的霸主地位,躍居全球第一。2011年9月份,Android系統(tǒng)的應(yīng)用數(shù)目已經(jīng)達(dá)到了48萬,而在智能手機(jī)市場,Android系統(tǒng)的占有率已經(jīng)達(dá)到了43%。繼續(xù)在排在移動操作系統(tǒng)首位。在本月19號,谷歌將會發(fā)布全新的Android4.0操作系統(tǒng),這款系統(tǒng)被谷歌命名為IceCreamSandwich(冰激凌三明治)。2012年1月6日,谷歌AndroidMarket已有10萬開發(fā)者推出超過40萬活躍的應(yīng)用,大多數(shù)的應(yīng)用程序?yàn)槊赓M(fèi)。AndroidMarket應(yīng)用程序商店目錄在新年首周周末突破40萬基準(zhǔn),距離突破30萬應(yīng)用僅4個月。而在2011年早些時候,AndroidMarket從20萬增加到30萬應(yīng)用也花了四個月。安卓優(yōu)點(diǎn)Andriod有如下八大優(yōu)點(diǎn):應(yīng)用程序框架支持組件的重用與替換Dalvik虛擬機(jī)專門為移動設(shè)備做了優(yōu)化內(nèi)部集成瀏覽器該瀏覽器基于開源的WebKit引擎優(yōu)化的圖形庫包括2D和3D圖形庫,3D圖形庫基于OpenGLES

SQLite用作結(jié)構(gòu)化的數(shù)據(jù)存儲多媒體支持包括常見的音頻、視頻和靜態(tài)印象文件格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)GSM電話(依賴于硬件)藍(lán)牙Bluetooth,EDGE,3G,andWiFi(依賴于硬件)照相機(jī),GPS,指南針,和加速度計(依賴于硬件)豐富的開發(fā)環(huán)境包括設(shè)備模擬器,調(diào)試工具,內(nèi)存及性能分析圖表,和Eclipse集成開發(fā)環(huán)境插件搭建安卓開發(fā)環(huán)境任何事物要運(yùn)行,都要有它的環(huán)境,Android也有它的環(huán)境才能夠運(yùn)行,下面介紹Android的開發(fā)環(huán)境配置。搭建開發(fā)環(huán)境需要的軟件有:操作系統(tǒng):Windows軟件包:AndroidSDK(SoftwareDevelopmentkitJavaDevelopmentkit)、ADT(AndroidDeveloopmentTool)IDE環(huán)境:EclipseIDE+ADTEclipse2.3以上JDK:JavaRuntimeEnvironment虛擬機(jī)、(JDK)JavaDevelopmentkit安裝步驟如下:第一步:安裝Java虛擬機(jī)sun-java6-jdk版本第二步:安裝Eclipse3.5工具官網(wǎng)/downloads/選擇版本(圖3.2):進(jìn)行安裝圖3.2第三步:安裝AndroidSDK:首先要下載SDK,可以在這個網(wǎng)址下載Http:///sdk,選擇相應(yīng)的系統(tǒng)進(jìn)行安裝.如3.3所示:圖3.3第四步:安裝AndroidADT插件運(yùn)行Eclipse,選擇help->installnewsoftware選擇add,將會彈出一個對話框,點(diǎn)擊OK,選擇要安裝的軟件,占next,然后選擇接受協(xié)議,直到安裝成功,重啟Eclipse軟件,設(shè)置AndroidSDKHome,Window->refrence在SDKlocation中輸入SDKTools路徑:D:\androidsoftware\android-sdk-windows點(diǎn)擊OK這樣Android環(huán)境就已經(jīng)搭建成功了,如圖2.4所示:圖3.4Andriod音樂播放器項(xiàng)目工程設(shè)計Andriod項(xiàng)目Android的四大基本組件:Activity(活動),Service(服務(wù)),BroadcastReceiver(廣播),ContentProvider(內(nèi)容提供者),各組件之間要進(jìn)行切換需要一個意圖或企圖Intent類,通過啟動StartIntent()方法來使各組件進(jìn)行跳轉(zhuǎn)。Android的五大布局方式:LinearLayout(線性布局)FrameLayout(幀布局)TableLayout(表格布局)AbsoluteLayout(絕對布局)RelativeLayout(相對布局)。五種布局方式可以相互嵌套,Android各種漂亮的界面都是通過嵌套布局而實(shí)現(xiàn)的。Android的線程,以及線程之間通信的中介:Handler類Android數(shù)據(jù)庫:在第三章已經(jīng)介紹過了。這里不再介紹Android配置文件:AndroidManifest.Xml及res資源文件中各種屬性布局方式引用的資源等Android系統(tǒng)將插件ADT集成到了Eclipse工具上,因此,一個Android程序啟動后,系統(tǒng)會啟動一個模擬器(Emulator)如下圖3.5:圖3.5Andriod工程程序設(shè)計Android工程基本結(jié)構(gòu)目錄包括:src(源代碼)、gen(Android系統(tǒng)自動生成的常量)、Res(資源文件):主要存放程序界面的布局配置(.xml)文件和圖片資源。AndroidMainfes.xml是四大組件的驅(qū)動配置文件,有它的存在,Android程序的四大組件才可以正常的跳轉(zhuǎn)。下圖3.6是音樂播放器代碼結(jié)構(gòu):圖3.6圖3.6內(nèi)容為該播放器的.Java文件、播放器所用到的字符串,字體大小、字的顏色等配置文件、該播放器的各種界面的布局配置文件及該播放器的圖片資源,如圖3.7所示:圖3.7AndroidManifest.xml文件Android系統(tǒng)的任何一個程序啟動都需要AndroidManifest.xml來啟動程序,任何一個新建的工程目錄都會自動生成一個AndroidManifest.xml文件,此配置文件是整個程序能夠正常運(yùn)行的核心,它里面包含了AndroidSDK的版本,程序運(yùn)行的默認(rèn)Activity,當(dāng)程序中的任何一個組件觸發(fā)事件后,系統(tǒng)都會自動的去AndroidManifest.xml中尋找標(biāo)識來作出相應(yīng)的操作。任何一個AndroidManifest.xml文件的格式都應(yīng)為:<?xmlversion="1.0"encoding="utf-8"?><manifest> <application> <activity> <intent-filter> <action/><category/> </intent-filter> </activity> </application> <uses-sdk/><uses-permission/></manifest>Android系統(tǒng)有一個編碼的規(guī)定,支持的編碼是"utf-8",當(dāng)程序中出現(xiàn)亂碼是,我們須將其編碼格式轉(zhuǎn)化為"utf-8".在AndroidManifest.xml中會在第一行聲明一句:<?xmlversion="1.0"encoding="utf-8"?>。它是該系統(tǒng)支持的版本和編碼。在第二行定義了我們需要使用的架構(gòu),該架構(gòu)來自xmlns:android="/apk/res/android"xmlns(XMLnamespace)是一個命名空間。在application元素我們定義android:icon="@drawable/icon"android:label="@string/app_name",android:icon是程序在手機(jī)中顯示的圖片,我們運(yùn)用@drawable/icon表示了對res/drawable目錄下的icon.png的引用。@string/app_name表示了對res/value目錄下string.Xml中定義的app_name參數(shù)的引用。<activityandroid:name=".PlayRackActivity"> <intent-filter> <actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/> </intent-filter> </activity>這是系統(tǒng)確定的首先要啟動的Activity是PlayRackActivity。過濾器intent-filter有兩種啟動方式來啟動界面:顯示方式顯示方式是在代碼中的直接啟動組件,啟動時會聲明Intent,在它的構(gòu)造方法Intent(組件1,組件2)中直接指定一個組件的名字,然后調(diào)用方法startIntent(intent)以啟動指定的組件。隱式方式隱式方式是通過過濾器來過濾完成的,啟動的組件必須滿足action和category的條件才能夠啟動該組件。這些屬性是在AndroidManifest.Xml文件中聲明的。兩種啟動方式都可以通過程序setAction(ACTION常量)和startActivity(intent)或配置文件兩種方式來實(shí)現(xiàn)組件的跳轉(zhuǎn)。安卓數(shù)據(jù)庫設(shè)計數(shù)據(jù)結(jié)構(gòu)組織和數(shù)據(jù)庫文件設(shè)計要根據(jù)不同用途,使用要求等,來決定數(shù)據(jù)的整體組織形式等一系列問題。數(shù)據(jù)庫,顧名思義,是存放數(shù)據(jù)的倉庫。只不過這個倉庫是在計算機(jī)存儲設(shè)備上,而且數(shù)據(jù)是按一定的格式存放的。數(shù)據(jù)庫中的數(shù)據(jù)按一定數(shù)據(jù)模型組織、描述和存儲,具有較小的重復(fù)度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并且可以被在一定范圍內(nèi)的各種用戶共享。在涉及數(shù)據(jù)庫的軟件開發(fā)中,需要根據(jù)有待解決的問題性質(zhì)、規(guī)模,以及所采用的前端程序創(chuàng)建工具等,做出合適的數(shù)據(jù)庫類型選擇。數(shù)據(jù)庫及字段屬性字段設(shè)計file_table主要是保存歌曲名字、類型、路徑字段說明:Id歌曲id號fileName歌曲名字filePath歌曲路徑sort歌曲類型(表4.1、圖4.2)屬性數(shù)據(jù)類型允許空主鍵_IdINTEGERNotnullPrimarykeyfileNameTEXTNotnullfilePathTEXTsortINTEGER表4.1列名數(shù)據(jù)類型長度字段描述_Idinteger5編號,主鍵groupidinteger5組編號Music-idinteger5歌曲編號表4.2Android自帶一個MediaStore封閉類專門來存儲媒體信息通過UriEXTERNAL_CONTENT_URI來訪問SDcard中的歌曲詳細(xì)信息。存放媒體信息如TITLE(標(biāo)題)、ARTIST(藝術(shù)家)、ALBUM(專輯)、SIZE(大小)如圖4.3與圖4.4所示:圖4.3歌曲列表圖4.4歌曲屬性音樂播放器E-R圖音樂播放器E-R(實(shí)體-聯(lián)系:entity-relation圖),歌曲的信息有歌曲名字、發(fā)行年份、流派名稱、專輯名稱、藝術(shù)家名稱、曲目號碼。歌曲的排列形成播放列表。列表有自己的編號,同時也給組成列表的歌曲名字分配編號。播放器通過函數(shù)查詢歌曲數(shù)量,然后顯示給用戶。如圖4.5所示:圖4.5音樂播放器E-R圖數(shù)據(jù)庫連接這里將介紹如何進(jìn)行Android數(shù)據(jù)庫連接,Android中自帶SQLite數(shù)據(jù)庫,這是一個十分小型的數(shù)據(jù)庫,這樣正適合Android這種移動平臺使用。Android數(shù)據(jù)庫存儲的位置在data/data/<項(xiàng)目文件夾>/databases/目錄下。Android是利用ContentProvider作為內(nèi)容提供商,SQLiteOpenHelper數(shù)據(jù)庫幫助類來進(jìn)行對數(shù)據(jù)庫的創(chuàng)建和操作。通過Context.getContentResolver()方法直接對數(shù)據(jù)庫進(jìn)行操作。程序中數(shù)據(jù)庫類為DBHelperextendsSQLiteOpenHelper(繼承關(guān)系),內(nèi)容提供類DBProviderextendsContentProvider(繼承關(guān)系)。創(chuàng)建數(shù)據(jù)庫Android提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫創(chuàng)建方式。繼承SQLiteOpenHelper,實(shí)現(xiàn)onCreate和onUpgrade兩個方法,有個好處就是便于數(shù)據(jù)庫版本的升級,連接數(shù)據(jù)庫的算法如下:publicDBHelper(Contextcontext){//創(chuàng)建數(shù)據(jù)庫 super(context,DATABASE_NAME,null,DATABASE_VERSION); }publicvoidonCreate(SQLiteDatabasedb){//創(chuàng)建時調(diào)用db.execSQL(DATABASE_CREATE);}publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,int newVersion){//版本更新時調(diào)用db.execSQL("DROPTABLEIFEXISTSFile_Table");onCreate(db); }@Override//在ContextProvider運(yùn)行時自動創(chuàng)建數(shù)據(jù)庫 publicbooleanonCreate(){ dbOpenHelper=newDBHelper(getContext());returntrue; }數(shù)據(jù)庫如果創(chuàng)建不成功則拋出FIleNotFoundException異常操作數(shù)據(jù)庫Android對數(shù)據(jù)庫的操作主要有插入、刪除、更新、查詢操作,在進(jìn)行任何操作時都必須指定一個Uri,才能對相應(yīng)的表進(jìn)行數(shù)據(jù)操作。//數(shù)據(jù)庫刪除操作@Override publicintdelete(Uriarg0,Stringarg1,String[]arg2){ SQLiteDatabasedb=dbOpenHelper.getWritableDatabase(); try{Db.delete(FileColumn.TABLE,arg1,arg2); }catch(Exceptionex){ ex.printStackTrace(); }return1;}@Override//數(shù)據(jù)庫插入操作 publicUriinsert(Uriuri,ContentValuesvalues){ SQLiteDatabasedb=dbOpenHelper.getWritableDatabase(); longcount=0; try{count=db.insert(FileColumn.TABLE,null,values); }catch(Exceptionex){ex.printStackTrace();} if(count>0)returnuri; elsereturnnull;}數(shù)據(jù)顯示程序是利用Cursor游標(biāo)類指向數(shù)據(jù)表中的某一項(xiàng),然后進(jìn)行查詢數(shù)據(jù),用Log日志顯示出來。@Override//數(shù)據(jù)庫查詢操作 publicCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder){ SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();//依次參數(shù)為:表名,查詢字段,where語句,替換,groupby(分組),having(分組條件),orderby(排序) Cursorcur=db.query(FileColumn.TABLE,projection,selection,selectionArgs,null,null,sortOrder);returncur;}播放器系統(tǒng)功能的實(shí)現(xiàn)播放器主界面功能實(shí)現(xiàn)主界面是用戶使用軟件的的第一個視野圖,也是用戶對軟件風(fēng)格的第一印象圖,很大影響用戶對使用軟件的評價,尤為重要。主界面顯示播放器主界面如圖5.1所示:圖5.1Android的每一個可視化界面,都有其的唯一的布局配置文件,該文件里面有各種布局方式,和各種資源文件如圖像,文字,顏色的引用,程序在運(yùn)行時,可以通過代碼對各配置文件進(jìn)行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個Activity,Android工程在每個activity啟動的時候會首先執(zhí)行Oncreate()方法,如下代碼:@Override PublicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.play_rack);}該方法主要執(zhí)行界面的初始化操作,Activity有個設(shè)置布局的方法:Context.setContentView(layoutResID),參數(shù)為資源ID,該Id在工程目錄res/layout下,主界面布局文件名為play_rack。下面為play_rack.xml布局文件代碼結(jié)構(gòu)如下:<?xmlversion="1.0"encoding="utf-8"?><AbsoluteLayout><LinearLayout></LinearLayout><SeekBar></SeekBar><LinearLayout></LinearLayout></AbsoluteLayout>在絕對布局<AbsoluteLayout>下嵌套兩種線性布局<LinearLayout>和<SeekBar>,第一個<LinearLayout>實(shí)現(xiàn)了標(biāo)題和歌曲名的顯示位置,通過<AbsoluteLayout>布局設(shè)置<LinearLayout>絕對坐標(biāo)來控制標(biāo)題的位置。每個布局內(nèi)可以放置多種Widget(窗體部件)例如:<TextView><ImageButton>等。每個Widget內(nèi)有多種屬性,可以設(shè)置該Widget的坐標(biāo),大小,背景和顏色等參數(shù)。在播放界面中,歌詞顯示為居中,實(shí)現(xiàn)方法代碼如下:<LinearLayoutandroid:orientation="horizontal"android:gravity="center"android:layout_height="wrap_content" android:layout_width="fill_parent"> <TextViewandroid:layout_height="wrap_content" android:textColor="#8deeee"android:id="@+id/lrcText" android:layout_width="wrap_content"></TextView></LinearLayout>屬性:orientation="horizontal":此線性布局的子部件為水平方式布局 Layout_width="fill_content":布局的寬度為填滿父布局Layout_height="wrap_content":布局的高度子由窗體的大小決定窗體TextView文本:textColor="8deeee"設(shè)置文本顯示的顏色RGB為"8deeee"TextSize為默認(rèn)大小播放器主界面音軌的實(shí)現(xiàn)播放器音軌SeekBar的實(shí)現(xiàn)如圖5.2所示:圖5.2音軌在play_rack.Xml配置文件中,SeekBar的代碼如下:<SeekBarandroid:id="@+id/seekbar"android:layout_width="245px" android:layout_height="20px"android:layout_x="40px"android:layout_y="260px" android:progressDrawable="@drawable/seekbar_style"android:thumb="@drawable/thumb" android:paddingLeft="18px"android:paddingRight="15px"android:paddingTop="5px"android:paddingBottom="5px"android:progress="0"android:max="100"android:secondaryProgress="0"></SeekBar>上面代碼中有參數(shù)android:thumb="@drawable/thumb"為音軌游標(biāo)的圖片資源android:progressDrawable="@drawable/seekbar_style"為SeekBar條的風(fēng)格style。引用了drawable中的seekbay_style.xml文件,seekbay_style.Xml是自定義的配置文件,算法如下:<?xmlversion="1.0"encoding="utf-8"?><layer-listxmlns:android="/apk/res/android"><itemandroid:id="@android:id/background"><shape><cornersandroid:radius="5dip"/><gradientandroid:startColor="#ff9d9e9d"android:centerColor="#ff5a5d5a"android:centerY="0.75"android:endColor="#ff747674"android:angle="270"/></shape></item><itemandroid:id="@android:id/secondaryProgress"> <clip><shape><cornersandroid:radius="5dip"/><gradientandroid:startColor="#80ffd300"android:centerColor="#80ffb600"android:centerY="0.75"android:endColor="#a0ffcb00"android:angle="270"/></shape></clip></item><itemandroid:id="@android:id/progress"><clip><shape><cornersandroid:radius="5dip"/><gradientandroid:startColor="#ff0099CC"android:centerColor="#ff3399CC"android:centerY="0.75"android:endColor="#ff6699CC"android:angle="270"/></shape></clip></item></layer-list>配置文件中三個Item項(xiàng)依次決定了SeekBar的三層背景。通過各種屬性設(shè)置了SeekBar的傾斜度,兩端圓半徑,角度,中心位置,起始,中心和結(jié)束的顏色,游標(biāo)的起始位置。通過這些屬性設(shè)置,就自定義一個如上圖5.2的SeekBar音軌.音軌對象SeekBar在歌曲剛開始播放的時候調(diào)用方法SeekBar.setMax(),參數(shù)傳入歌曲的長度。SeekBar.setProgress(1)設(shè)置游標(biāo)的起始進(jìn)度為1。然后程序運(yùn)行如下代碼:privateRunnablethread_One=newRunnable(){//線程publicvoidrun(){intcurrently_Progress=seekBar.getProgress()+1000; seekBar.setProgress(currently_Progress); currently_Time.setText(getFileTime(mplayer.getCurrentPosition())); showLrcTwo(lrc_time,lrc_word);handler.postDelayed(thread_One,1000);}};Android的線程的開始是通過Handler類來進(jìn)行的,Handler類是線程與線程之間通信的橋梁,實(shí)現(xiàn)Runnable接口會實(shí)現(xiàn)里面的run方法,當(dāng)線程開始的時候,Runnable中的run方法會向Handler發(fā)一個Message消息,這樣,Handler類就可以接收到run方法發(fā)送過來的不同的消息進(jìn)行不同的代碼處理。這樣就達(dá)到了各線程之間的通信。要啟動一個線程調(diào)用Handler的方法postDelayed(Runnable,1000)表示線程睡眠時間是1000ms。以上代碼意思是讓播放歌曲的線程每隔1000ms,即每1秒對音軌的TextView重新設(shè)置時間且讓進(jìn)度條前進(jìn)1秒的進(jìn)度。對音軌進(jìn)行刷新。這樣就實(shí)現(xiàn)了歌詞同步功能SeekBar有一個監(jiān)聽器,該監(jiān)聽器的作用是一直保持著對進(jìn)度條的監(jiān)聽,當(dāng)我們用鼠標(biāo)向SeekBar的各位置進(jìn)行點(diǎn)擊時,它會自動監(jiān)聽其位置,進(jìn)行相應(yīng)的位置顯示。這也是進(jìn)度條上的游標(biāo)會不停的移動和歌詞時間會不停的變動的原因。播放器的播放、暫停、上一曲、下一曲等功能播放器主界面功能有播放、暫停、停止、上一曲、下一曲、進(jìn)入列表功能,如圖5.3所示:圖5.3配置文件代碼結(jié)構(gòu)如下:<LinearLayout> <ImageButton></ImageButton> <ImageButton></ImageButton> <ImageButton></ImageButton> <ImageButton></ImageButton> <ImageButton></ImageButton></LinearLayout>android的媒體播放原理:android源程序已經(jīng)為我們封裝好了一個接口類,叫MediaPlayer。該接口在執(zhí)行行需要一個數(shù)據(jù)源,通過如下四個步驟:第一步:MediaPlayer.reset();復(fù)位操作,為以后的媒體準(zhǔn)備播放作準(zhǔn)備。:第二步:傳入歌曲數(shù)據(jù)源,這里也是一個數(shù)據(jù)流MediaPlayer.setDataSource(Stringpath);參數(shù)需要傳一個路徑,該接口類在收到路徑后將其轉(zhuǎn)化為數(shù)據(jù)源。第三步:準(zhǔn)備播放數(shù)據(jù)源,調(diào)用方法MediaPlayer.Prepare();第四步:MediaPlayer.Start();播放數(shù)據(jù)源,該數(shù)據(jù)源播放后,不再與程序有關(guān),需要用MediaPlayer.Stop()方法讓其停止或MediaPlayer.Start();讓其啟動;歌曲數(shù)據(jù)源的獲得:要獲得數(shù)據(jù)源,需要我們提供給接口類一個歌曲存放路徑,而這個路徑已經(jīng)被事先放到數(shù)據(jù)庫里了,我們只需要進(jìn)行數(shù)據(jù)庫進(jìn)行操作。將里面的路徑取出。這里將調(diào)用PlayRackActivity的一個方法query();代碼算法如下:publicStringquery(){ ContentResolvercr=getContentResolver(); Uriuri=DBProvider.CONTENT_URI; String[]projection={"path"}; Stringselection="fileName=?"; String[]selectionArgs={selectName}; Cursorc=cr.query(uri,projection,selection,selectionArgs,null); if(c.moveToFirst()){ Stringpath=c.getString(0); returnpath; }returnnull;}方法getContentResolver是包android.content.ContextWrapper里面的方法,它會自動的調(diào)用ContentProvider中的關(guān)聯(lián)數(shù)據(jù)庫,我們需用這個方法就可以操作數(shù)據(jù)庫。數(shù)據(jù)庫操作需要一個Uri。Uri類似一個網(wǎng)絡(luò)連接的Url。Uri是數(shù)據(jù)庫唯一的標(biāo)識,不同的Uri可以操作不同的數(shù)據(jù)庫表。在查詢數(shù)據(jù)庫時需要傳入一個當(dāng)前播放的歌曲名字,通過歌曲名字來查詢歌曲的路徑。播放列表顯示播放列表顯示如圖5.4所示:圖5.4在Android里面,有一個視圖叫ListView,其特點(diǎn)是一個有BaseAdapter的屬性,從下到下,或從左到右的顯示方式。系統(tǒng)默認(rèn)的方式每一行只顯示一個TextView,本播放列表實(shí)現(xiàn)了自定義的方式,剛ListView的每一行顯示一個音樂圖片和一個歌曲名字。我們定義一個類MusicAdapter繼承了BaseAdapter,然后通過算法對這個適配器進(jìn)行擴(kuò)展,擴(kuò)展成為第一行能顯示一張圖片和一個歌曲名字。由于BaseAdapter是一個抽象類,我們需要實(shí)現(xiàn)里面的抽象方法getView()。該方法返回一個View,即視圖。視圖可以顯示在Activity上,所以就可以看到我們想要的歌曲列表界面。ListView同樣有一個監(jiān)聽器newonItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,longarg3){}},我們只要實(shí)現(xiàn)這個方法,就可以監(jiān)聽鼠標(biāo)的點(diǎn)擊事件,當(dāng)鼠標(biāo)點(diǎn)擊到每一行時,可以通過ListView.getItemAtPositon(intposition)得到該行上的信息。這樣就可以通過Intent將數(shù)據(jù)傳入到其它的Activity。本程序的思路是當(dāng)鼠標(biāo)點(diǎn)擊一行,會跳轉(zhuǎn)到另一個Activity里面,這個Activity和歌曲列表類似,也是一個ListView。菜單功能實(shí)現(xiàn)菜單功能的實(shí)現(xiàn)如圖5.5所示:圖5.5菜單功能有播放、詳細(xì)屬性、新增歌曲、移除歌曲、全部移除、設(shè)置功能。各功能都是通過鼠標(biāo)點(diǎn)擊或觸屏觸發(fā)事件。播放功能:點(diǎn)擊后事件觸發(fā),傳入歌曲名字,讓程序操作該名字進(jìn)行播放。詳細(xì)功能:點(diǎn)擊后事件觸發(fā),傳入歌曲名字,跳轉(zhuǎn)到下一界面,顯示該歌曲的詳細(xì)信息。新增功能:點(diǎn)擊后事件觸發(fā),進(jìn)入到SDCard中,進(jìn)行歌曲添加選擇。移除功能:點(diǎn)擊后事件觸發(fā)。從數(shù)據(jù)庫中刪除選中的歌曲。全部移除:點(diǎn)擊后事件觸發(fā),刪除播放列表。設(shè)置功能:點(diǎn)擊后事件觸發(fā),進(jìn)入到播放設(shè)置列表。在Menu.Xml配置文件中,布局結(jié)構(gòu)如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayout><LinearLayout><TextView></TextView></LinearLayout> <ListView></ListView><TextView></TextView><LinearLayout> <ImageButton></ImageButton> </LinearLayout></LinearLayout>在程序中的Menu.Java中有List<String>容器,該容器可以存放String類型的字符,如下:List<String>seclect_items=newArrayList<String>();seclect_items.add("播放"); seclect_items.add("詳細(xì)"); seclect_items.add("新增"); seclect_items.add("移除"); seclect_items.add("全部移除"); seclect_items.add("設(shè)置");然后通過ListView.setAdapter();方法將這些參數(shù)設(shè)置到界面中去,可以看到與界面顯示效果相同!播放界面實(shí)現(xiàn)播放界面的實(shí)現(xiàn)如圖5.6所示:圖5.6配置文件setting.Xml布局結(jié)構(gòu)如下:<?xmlversion="1.0"encoding="utf-8"?> <LinearLayout> <RadioGroup> <RadioButton></RadioButton> <RadioButton></RadioButton> <RadioButton></RadioButton> </RadioGroup> </LinearLayout><ToggleButton/><AbsoluteLayout> <ImageButton/> <ImageButton/> </AbsoluteLayout>最外層的LinearLayout里面嵌套多層LineaLayout,子LinearLayout里面嵌套著單選按鈕RatioGroup和開關(guān)按鈕ToggleButton。RatioGroup里面嵌套著3個RatioButton,即界面上顯示的(單曲循環(huán)、隨機(jī)播放、順序播放)。歌詞顯示歌詞顯示界面如圖5.7所示圖5.7歌詞的播放以自下向上的滾動方式進(jìn)行。播放模式狀態(tài)和歌詞顯示狀態(tài)的操作結(jié)果都將以一個標(biāo)志,被寫在一個配置文件中。本播放器以歌詞格式.Lrc的文件。我們查看.Lrc文件中的歌詞格式為:[00:16.18]Inthewall即是以“時間+歌詞”的格式存儲。Lrc中的歌詞讀取出來并存儲在Android的配文件中我們可以看到一個目錄為sdcard,該目錄即為擴(kuò)展卡,里面預(yù)先存放著音頻文件和.Lrc歌詞文件,我們定義一個BufferedReaderbuffer=newBufferedReader(newFileReader(newFile("/sdcard/"+musicName+".lrc")));指定.Lrc文件存在的路徑,并將文件讀取到BufferReader中。由于我們要分別存放時間和歌詞,所以我們應(yīng)該定義兩個List<String>容器來存放時間和歌詞。在讀取lrc時,每次讀取一行,再用算法將時間和歌詞分開后放到一個數(shù)組里面,并分別存放在兩個list中。由于歌曲在播放時會存在界面之間的跳轉(zhuǎn),所以歌詞必須固定存放在一個文件中,而不能作為一個對象,因此,我們將兩個時間List和歌詞List再寫進(jìn)一個配置文件中.Android提供給我們一個共享文件的類SharedPreferences。它有一個方法getSharedPreferences(參數(shù)1,參數(shù)2),參數(shù)1為寫進(jìn)時的標(biāo)記,便于在從其中讀取出來時的標(biāo)記,參數(shù)2為讀取模式,有只寫模式(MODE_WORLD_WRITEABLE)和只讀模式(MODE_WORLD_READABLE),在寫之前將其置入編輯狀態(tài),用靜態(tài)方法SharedPreferences.Editoreditor=sp.edit();然后對象editor可以存入一個HashMap<key,values>類型的鍵值,即putString(KEY,VALUES),這樣,我們可以將List中的對象轉(zhuǎn)化成一樣長的字符中放進(jìn)配置文件中.手機(jī)擴(kuò)展卡的訪問程序?qū)崿F(xiàn)了文件瀏覽器的功能,作為一個文件瀏覽器,應(yīng)該具有瀏覽的功能,當(dāng)程序運(yùn)行到瀏覽界面時,會有各文件的目錄顯示及圖標(biāo)標(biāo)識。從文件瀏覽器中我們能看到各文件,而且能對其進(jìn)行操作,本程序是專為播放器添加歌曲而設(shè)計的,因此功能僅限于對媒體文件的瀏覽,和含有媒體文件的目錄的瀏覽。所以功能比較局限。當(dāng)顯示菜單界面時,通過新增選項(xiàng)進(jìn)入到文件瀏覽器中,或者當(dāng)播放列表為空時,會提示進(jìn)入文件瀏覽器進(jìn)行歌曲新增操作。如圖5.8所示:圖5.8文件瀏覽器界面布局格式類似上面介紹的菜單,只是在界面的第一行新增了一個返回根目錄的功能。由于程序只關(guān)系到目錄/sdcard的目錄下的文件,所以用程序屏蔽了其它的目錄,這里只顯示兩個目錄/sdcard和/system。播放器只需要用到媒體文件,所以代碼也屏蔽了其它文件的子目錄。當(dāng)要添加選中的歌曲時,程序有自動判斷功能,首先彈出Dialog。點(diǎn)擊確定按鈕后,程序會查詢數(shù)據(jù)庫中的歌曲,調(diào)用方法query(fileName),根據(jù)歌曲名字查詢,如果歌曲不存在,則調(diào)用方法insertMusic(file),如果該歌曲名字已經(jīng)存在,則彈出Dialog對話框,當(dāng)添加成功后,程序會跳轉(zhuǎn)到播放列表中以顯示添加結(jié)果。程序中,文件瀏覽器類為FileExplorerActivity繼承了ListActivity,此Activity是一個ListView界面。整個界面是一個ListView布局,而每一行是一個LinearLayout水平方式布局,上面將放置一個圖片和一個文件全路徑。該文件全路徑被存放到數(shù)據(jù)庫中,以便歌曲播放能查詢到歌曲路徑源。該ListView實(shí)現(xiàn)了自動判斷的功能,即程序可以通過訪問擴(kuò)展卡中的文件屬性而自動識別文件屬性。如上圖所示:當(dāng)為一個Mp3格式文件時,則前面圖標(biāo)顯示mp3圖標(biāo),當(dāng)為一個文件目錄時,則圖標(biāo)標(biāo)識為一個文件。系統(tǒng)測試由于對android的接觸較少,所以也遇到了一些問題,無論是哪種語言首先要有自己的思路,接下來就是通過語言的實(shí)現(xiàn)。我主要遇到android的四大組件的理解和使用,剛開始不知道如何用相關(guān)的組件,而且android的組件相當(dāng)?shù)亩啵屠蠋熒险n講的相關(guān)知識比較少,對于我們初學(xué)者學(xué)習(xí)比較困難,而且,只是不是那么的連貫和詳細(xì),上課的時間只是跟上老師再敲代碼,實(shí)現(xiàn)一個具體的功能,但是不有真正的弄懂它的使用方法,所以,我們在課設(shè)中出現(xiàn)很多問題。實(shí)驗(yàn)主要讀錯誤提示進(jìn)行調(diào)試,在課設(shè)中主要出現(xiàn)的錯誤時“系統(tǒng)異常,強(qiáng)制終止”如下圖6.1所示:圖6.1而大多數(shù)時間出現(xiàn)如上所示的情況,這是我們需要對LogCat查看錯誤,課設(shè)中曾經(jīng)常出現(xiàn)的是內(nèi)存空間已滿,需要釋放進(jìn)程空間,以導(dǎo)致出現(xiàn)程序運(yùn)行時出現(xiàn)圖6.2所示的現(xiàn)象,當(dāng)出現(xiàn)錯誤時,我們必須查看錯在哪兒,然后改正。圖6.2總結(jié)通過對Android手機(jī)平臺的音樂播放器軟件的開發(fā),使我對Android音樂播放器系統(tǒng)的整體設(shè)計有一個深入的了解,對整個流程也會有一個清晰的認(rèn)識。音樂播放器軟件實(shí)現(xiàn)了播放器的基本功能:播放,暫停、上/下一首、歌曲排序、文件瀏覽等功能。運(yùn)用的系統(tǒng)平臺是現(xiàn)今最熱門的Android系統(tǒng),是一個開源的基于Linux系統(tǒng)的手機(jī)平臺。是以Java語言編寫SQLite數(shù)據(jù)庫支持SharePreference配置文件的組合方式進(jìn)行數(shù)據(jù)管理。實(shí)現(xiàn)了音樂播放器的系統(tǒng)編程。本次程序設(shè)計,對播放器的系統(tǒng)結(jié)構(gòu)框架做了精心的構(gòu)思與設(shè)計,采用主要開發(fā)工具是Eclipse6.0+Java語言的支持,AndroidDevelopmentTool的插件,和AndroidSDK2.3版本的全面結(jié)合,才使整個音樂播放器系統(tǒng)得以實(shí)現(xiàn)。在開發(fā)過程中我學(xué)到了一些經(jīng)驗(yàn):系統(tǒng)分析的好壞將決定著的系統(tǒng)開發(fā)成功與否,一份好分析設(shè)計將是成功開發(fā)主要因素。我們在著手開發(fā)之前不要急于編程,先應(yīng)有較長的時間去把分析做好,寫出相關(guān)的開發(fā)文檔等。然后再開始編寫程序代碼,這樣做到每寫一步代碼心底有數(shù),有條不絮。總之,經(jīng)過幾個月的Android系統(tǒng)技術(shù)知識的學(xué)習(xí)和對音樂播放器的構(gòu)思與設(shè)計,使我對Android系統(tǒng)有了一定的了解,讓我對Android系統(tǒng)上的開發(fā)流程和開發(fā)模式有了深入的了解,這對我以后的Android項(xiàng)目開發(fā)有很大的幫助。在此論文抒寫過程中,我還要感謝我的指導(dǎo)老師給我的支持和建議。讓我能順利的完成本次論文。參考文獻(xiàn)[1]張孝祥著.java就業(yè)培訓(xùn)教程[M].北京:清華大學(xué)出版社,2007.[2]高彩麗.Android應(yīng)用開發(fā)范例精解.北京.清華大學(xué)出版社.2012[3]張元亮.Android開發(fā)應(yīng)用實(shí)戰(zhàn)詳解.北京.中國鐵道出版社.2011[4]靳巖姚尚朗著.GoogleAndroid開發(fā)入門與實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2009-07-01.[5]畢廣吉.Java程序設(shè)計實(shí)例教程[M].北京:冶金工業(yè)出版社,2007.[6]何玉杰.數(shù)據(jù)庫原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2007.基于C8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺控制器的研制基于單片機(jī)的軟起動器的研究和設(shè)計基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時內(nèi)核設(shè)計及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動檢測儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號檢測儀基于單片機(jī)的電機(jī)運(yùn)動控

溫馨提示

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

最新文檔

評論

0/150

提交評論