畢業(yè)論文--基于Android的Mp3播放器.doc_第1頁
畢業(yè)論文--基于Android的Mp3播放器.doc_第2頁
畢業(yè)論文--基于Android的Mp3播放器.doc_第3頁
畢業(yè)論文--基于Android的Mp3播放器.doc_第4頁
畢業(yè)論文--基于Android的Mp3播放器.doc_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

河北農(nóng)業(yè)大學(xué)現(xiàn)代科技學(xué)院 本科畢業(yè)論文(設(shè)計(jì))題 目: 基于Android的Mp3播放器 學(xué) 部: 工程技術(shù)學(xué)部 專業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)0901班 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師姓名: 指導(dǎo)教師職稱: 教授 二O一三 年 五 月 二十五 日摘要由Google倡導(dǎo)發(fā)起的開放式手機(jī)聯(lián)盟及其推出的Android平臺(tái)一經(jīng)發(fā)布便在業(yè)內(nèi)引起了軒然大波。在此背景下本人利用Eclipse和Android SDK開發(fā)工具設(shè)計(jì)出了一款基于Android的MP3播放器。文章首先介紹了Android技術(shù)及其特點(diǎn),然后介紹Android的開發(fā)環(huán)境,接著對系統(tǒng)進(jìn)行了總體分析,在設(shè)計(jì)出了功能結(jié)構(gòu)圖和流程圖之后,在分析需求的基礎(chǔ)上詳細(xì)闡述了MP3播放器的設(shè)計(jì)與實(shí)現(xiàn)過程,最后測試系統(tǒng),對播放器的不足進(jìn)行總結(jié)。該播放器支持搜索本地音樂、播放音樂,集播放、暫停、停止、上一首、下一首、音量調(diào)節(jié)、歌詞顯示等功能于一體。關(guān)鍵字:Android系統(tǒng);MP3播放器 Abstract By Google advocate the release of the league and its mobile phone launched the launch of the Android platform has issued and caused a stir in the industry. I use Eclipse and Android SDK development tools design a MP3 player which based on Android. This article first introduces the Android technology and features, And then introduced the Android development environment, Then the system as a whole analysis, In a function structure chart and design flow chart after, On the basis of analysis demand expounds the MP3 player after the design and realization of the process, The last test system, To the deficiency of the players were summarized in this paper. The player supports playback of local music, search, and it has a certain practicality. The music player episode pause, stop, and a on, next, volume adjustment, lyrics display functions, such as performance is good, and it can operate independently in the Android system. Keywords: Android system; MP3 player 目 錄1 緒 論11.1 課題背景11.2 Android的介紹11.3 Android開發(fā)環(huán)境的搭建21.4 Android SDK 1.6的模擬器的介紹52 系統(tǒng)的總體設(shè)計(jì)概要62.1 總體功能架構(gòu)62.2 功能流程圖73 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)83.1 Android程序設(shè)計(jì)的一般方法83.2 MP3播放器的模塊設(shè)計(jì)83.2.1編碼規(guī)范83.2.2界面的搭建83.2.3播放模塊114 測試與分析144.1軟件測試準(zhǔn)備工作144.2系統(tǒng)測試內(nèi)容概要144.2.1 列表的更新測試144.2.2各種格式的歌曲的詳情查看測試144.2.3測試音樂播放器主頁面的顯示以及一些主要操作144.2.4 測試音樂播放器的其他一些基本操作155.結(jié)束語16.參考文獻(xiàn)171 緒 論1.1 課題背景Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開源移動(dòng)終端操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。隨著科技的不斷發(fā)展,手機(jī)不再只是人們?nèi)粘I畹囊苿?dòng)通信工具,而是一個(gè)多媒體平臺(tái),可提供強(qiáng)大的多媒體功能,越來越多的人喜歡用手機(jī)聽音樂、看電影。Android系統(tǒng)內(nèi)置的音樂播放器基于媒體庫對歌曲進(jìn)行管理,并且支持歌詞的同步顯示。對于部分用戶,操作起來會(huì)有所不便。對于Android手機(jī)操作系統(tǒng),可以充分利用它已經(jīng)習(xí)慣的基于文件瀏覽器形式播放器的豐富的可編程擴(kuò)展性,開發(fā)出新的播放器應(yīng)用軟件。1.2 Android的介紹近年來,Google智能手機(jī)平臺(tái)Android得到了手機(jī)行業(yè)及客戶的普遍認(rèn)可, 呈爆炸性的趨勢發(fā)展,為移動(dòng)運(yùn)營商、手機(jī)制造商、軟件開發(fā)商及客戶提供了無限的發(fā)展空間,使市場上不斷涌現(xiàn)出大量的基于Android平臺(tái)的軟件和增值服務(wù)。(1)Android系統(tǒng)的架構(gòu):分層的構(gòu)架的好處是下層為上層提供統(tǒng)一服務(wù),屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會(huì)影響到上層。也就是說各層各司其職,各層提供固定的SAP。從架構(gòu)來看Android分為四層,從低層到高層分別是Linux核心層、系統(tǒng)運(yùn)行庫層、應(yīng)用程序框架層、和應(yīng)用程序?qū)?。Linux核心層為使用C實(shí)現(xiàn)的代碼內(nèi)核(Linux內(nèi)核+driver),運(yùn)行于內(nèi)核空間。系統(tǒng)運(yùn)行庫層(Android運(yùn)行環(huán)境)為使用C/C+ 語言編寫的程序庫,運(yùn)行于用戶空間。應(yīng)用程序和應(yīng)用程序框架層主要是使用Java編寫的Java 應(yīng)用程序,運(yùn)行于用戶層。(2)Android操作平臺(tái)的發(fā)展:如今已經(jīng)成為了智能手機(jī)行業(yè)的支柱平臺(tái)之一。它不但一舉超越了iPhone的市場占有率,還吸引了大量iPhone及其它平臺(tái)開發(fā)者!Android平臺(tái)擁有多重開發(fā)環(huán)境,除了智能手機(jī)外,開發(fā)者還能在采用了Android平臺(tái)的平板電腦、Google TV、MID及MP4產(chǎn)品上開發(fā)應(yīng)用程序。從而擁有超越其它系統(tǒng)平臺(tái)的多重環(huán)境優(yōu)勢。根據(jù)美國移動(dòng)廣告商AdMob的統(tǒng)計(jì),iPhoneOS在美國本土的網(wǎng)絡(luò)流量占了美國本土全部移動(dòng)互聯(lián)網(wǎng)流量的39%,而Android系統(tǒng)首次超越了它,達(dá)到了46%。不過要放在世界范圍內(nèi)來看,iPhone OS仍占了46%,而Android只占了25%,還是排第二,不過仍能說明 Android的來勢洶洶。 (3)Android系統(tǒng)的“開放”性:任何手機(jī)制造商均可無需支付專利費(fèi)即可將此系統(tǒng)運(yùn)用在自己的手機(jī) Google的以Linux為內(nèi)核的Android移動(dòng)手機(jī)平臺(tái)從誕生之日起短時(shí)間內(nèi)便在世界范圍里獲得了廣泛的關(guān)注。最的報(bào)告顯示在中國,一個(gè)擁有最大的人口,擁有最多的手機(jī)用戶,擁有巨大的增長潛力的國家,這個(gè)系統(tǒng)的占有率沿著一個(gè)倒拋物線的增長曲率成為手機(jī)操作系統(tǒng)中的霸主。開放手機(jī)聯(lián)盟的成立和 Android的推出是對現(xiàn)狀的重大改變,在帶來初步效益之前,還需要不小的耐心和高昂的投入。但是,我們認(rèn)為全球移動(dòng)用戶從中能獲得的潛在利益是值得付出這些努力的。谷歌將繼續(xù)努力,讓這些服務(wù)變得更好,同時(shí)也將添加更有吸引力的特性、應(yīng)用和服務(wù)。1.3 Android開發(fā)環(huán)境的搭建本系統(tǒng)以Android開發(fā)工具為平臺(tái),搭建過程如下:(1)安裝JDK1.6.11用戶可下載程序JDK1.6.11,然后就解壓,按步驟安裝就可以使用了。(2)eclipse的安裝與配置首先,要安裝eclipse 軟件必須要有相應(yīng)的安裝程序,用戶可下載程序eclipse-java-galileo-win32,然后就解壓就可以使用了。Eclipse的配置如下圖1.1:圖1.1 Eclipse的配置圖 (3)在eclipse中配置Android所需插件A:運(yùn)行eclipse,點(diǎn)擊help選項(xiàng)中的Install new Software,然后導(dǎo)入ADT插件壓縮包;B:安裝android-sdk-windows,點(diǎn)擊window選項(xiàng)里的Perferences,然后選擇android,導(dǎo)入android-sdk-windows。配置插件圖如下:圖1.2 配置插件圖(4)環(huán)境變量的設(shè)置右擊我的電腦選擇屬性,在屬性欄中選擇高級(jí),進(jìn)行環(huán)境變量的設(shè)置:A:新建環(huán)境變量,變量名JAVA_HOME,變量值D:Program FilesJavajdk1.6.0_14B:修改環(huán)境變量,變量名Path,變量值%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;C:Program FilesATI TechnologiesATI.ACECore-Static;C:Program FilesCommon FilesThunder NetworkKanKanCodecs;%JAVA_HOME%bin;%JAVA_HOME%jrebin;C:Program FilesTortoiseSVNbin,環(huán)境變量設(shè)置如下圖1.3:圖1.3 環(huán)境變量設(shè)置圖(5)ADT安裝ADT實(shí)際上是一個(gè)工具,它可以連接SDK和Eclipse,幫助Eclipse找到SDK打開Eclipse界面,進(jìn)入菜單中的“Help” “InstallNewSoftware”,點(diǎn)擊Add按鈕彈出對話框要求輸入Name和Location,完成之后,選擇Window Preferences;在左邊的面板選擇Android,然后在右側(cè)點(diǎn)擊Browse;并選中SDK路徑,本機(jī)為;D:AndroidAndroidSDKr07windows;點(diǎn)擊Apply和OK之后配置完成。1.4 Android SDK 1.6的模擬器的介紹Android SDK包含一個(gè)Eclipse插件,名為ADT。這個(gè)IDE工具用于開發(fā)、調(diào)試和測試Java應(yīng)用程序。也可以單獨(dú)使用Android SDK,使用命令行工具代替ADT。兩種方法都支持使用模擬器來運(yùn)行、調(diào)試和測試應(yīng)用程序。大多數(shù)應(yīng)用程序開發(fā)工作都不需要真實(shí)設(shè)備。全功能的Android模擬器能夠模擬大部分的設(shè)備功能。模擬器不能模擬USB連接、照相機(jī)與視頻采集、耳機(jī)、電池和藍(lán)牙。Android模擬器使用一種名為QEMU的開源“處理器模擬器”技術(shù)來完成它的工作,此技術(shù)由Fabrice Bellard開發(fā)。這項(xiàng)技術(shù)還支持在一個(gè)操作系統(tǒng)上模擬另一個(gè)操作系統(tǒng),而不用考慮采用了何種處理器。QEMU支持在CPU級(jí)別上進(jìn)行模擬。在Android模擬器中,處理器基于ARM架構(gòu)。ARM是一種基于RISC的32位微處理器架構(gòu),其設(shè)計(jì)上的簡單性和較高的速度通過指令集中精減的指令來實(shí)現(xiàn)。模擬器在此模擬處理器上運(yùn)行Linux的Android版本。172 系統(tǒng)的總體設(shè)計(jì)概要2.1 總體功能架構(gòu)MP3播放器的設(shè)計(jì)分成了界面搭建模塊,播放模塊和編碼模塊,界面有主界面,播放界面,歌曲列表界面;播放模塊中有許多的按鈕,如暫停,下一首,音量調(diào)節(jié)按鈕等。本設(shè)計(jì)根據(jù)MP3播放器的功能將系統(tǒng)按照自頂向下的方式進(jìn)行設(shè)計(jì),播放器編碼模塊播放模塊界面搭建模塊模塊編碼主程序編碼上一首停止音量下一首暫停歌曲列表界面播放界面主界面 圖2.1 播放器的功能劃分結(jié)構(gòu)圖2.2 功能流程圖根據(jù)MP3播放器的功能設(shè)計(jì),制定出的的流程圖如下:程序啟動(dòng)播放主界面播放列表選擇歌曲播放歌曲退出 圖2.2播放器的功能流程圖3 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)3.1 Android程序設(shè)計(jì)的一般方法首先搭建平臺(tái),播放器的設(shè)計(jì)界面可以通過Android的繪圖技術(shù)實(shí)現(xiàn),然后手動(dòng)編寫每個(gè)模塊的Java程序,最后調(diào)試程序。3.2 MP3播放器的模塊設(shè)計(jì)3.2.1編碼規(guī)范首先從布局文件說起,布局文件名稱的定義必須為小寫字母,否者無法生成R類,盡量不要用縮寫。以表達(dá)清楚該文件用途為本,通常情況下控件ID的定義,ID的定義一律為小寫,例如:一用戶名 TextView 可以定義為:+ID/username_view 。以“名詞_控件名稱”這種形式定義。其次是圖片的定義格式,圖片的定義也是為解釋清楚用途為準(zhǔn),參照這種定義格式“btn_background_ok.png”string類的name定義,這里可以按照J(rèn)AVA中變量的定義方式定義。首字母小寫,駝峰命名法。例如:用戶名:最后類名與變量的定義 ,定義與用戶交互的類,Activity.java 。自定義變量一律以小寫m開頭 例如: EditText mUserName=3.2.2界面的搭建界面的搭建模塊各主要界面運(yùn)用的是Android的繪圖技術(shù)。繪制圖形通常使用Android.View、View。界面搭建會(huì)用到各種控件,如:Button或ImageButton,控件有RadioButton,ToggleButton,和ZoomButton。控件的設(shè)置涉及到容器的使用,使用的容器有Android RelativeLayout容器 、Android LienearLayout容器等,控件布局運(yùn)用到線性布局、絕對布局、表格布局等。MP3播放器的圖標(biāo)如下圖3.1:圖3.1圖標(biāo)界面圖 圖3.2曲目界面圖音樂文件播放時(shí)的播放界面如下圖3.3:圖3.3播放列表界面圖窗口布局文件位于res/layout目錄下,在layout目錄下創(chuàng)建布局文件。創(chuàng)建布局文件步驟:(1)在左側(cè)欄中的layout文件夾上右鍵,選擇New-File,在彈出的窗口中的File name處填入songlist.xml。單擊Finish,即創(chuàng)建了一個(gè)空的布局文件。如果對Android布局XML文件的語法非常熟悉,那么可以直接編輯該文件,但是一般情況下,我們還是用ADT工具進(jìn)行所見即所得的編輯。(2)Android的窗口是由Layout和View組成的,Layout中可以包含View和Layout。這個(gè)應(yīng)用的界面排列較簡單,因此,最外層的Layout可以采用LinerLayout這種比較簡單的格式。要添加它,先點(diǎn)擊右側(cè)邊欄中Outline選項(xiàng)卡下的綠色“+”按鈕,在彈出的窗口中選擇LinerLayout,就添加成功了,在Outline窗口中就可以看到剛剛添加的這一項(xiàng),同時(shí)中間的主窗口中也會(huì)顯示一個(gè)空的黑色窗體。另外,還可以修改某個(gè)Layout或View的屬性,方法是在右側(cè)的Outline窗口中選中要修改的窗口元素,在下側(cè)邊欄中,切換到Properties選項(xiàng)卡,就可以看到所有的項(xiàng)目屬性。圖3.4窗口屬性圖大多數(shù)的選項(xiàng)都不需要手動(dòng)設(shè)置。下面繼續(xù)添加其它的窗口元素。Layout下可以嵌套其它的Layout和View,界面的上部分就是在最外層的LinerLayout下再放置了一個(gè)LinerLayout,然后在里層的LinerLayout里放置一排ImageButton。界面的下半部分是一個(gè)ListView(或者TextView)。當(dāng)要在某個(gè)Layout里添加元素時(shí),只需要先點(diǎn)擊選中該Layout然后再點(diǎn)擊“+”圖標(biāo),就可以添加子元素到其中。這時(shí)還需要對各個(gè)元素的屬性作一些修改。例如對于5個(gè)ImageButton,需要設(shè)置其Src屬性。這個(gè)屬性表示的是圖片的來源。例如back按鈕上要顯示是的一個(gè)指向左邊的箭頭,這個(gè)箭頭圖標(biāo)名為back.png,在前述步驟中已經(jīng)被放在了res/drawable目錄中了。把這個(gè)圖標(biāo)設(shè)為back按鈕的圖片來源,就需要在Src屬性處填入drawable/back。drawable/back就是引用這個(gè)箭頭圖標(biāo)資源的ID。如左圖所示,在第一個(gè)LinerLayout下面,還添加了一個(gè)View。這個(gè)View中沒有顯示元素,而只是起一個(gè)分隔線的作用,讓界面更美觀一些。這個(gè)View的Layout height 屬性設(shè)為5dip,在顯示時(shí),上方的按鈕就不會(huì)和下方的歌曲列表擠在一起了。在空白View的下方,可以看到,分別添加了一個(gè)ListView和一個(gè)TextView。值得注意的是,這兩個(gè)元素其實(shí)并不會(huì)同時(shí)顯示。這是因?yàn)樗鼈兊腎D分別為Android:id/list和android:id/empty,這種ID屬于Android系統(tǒng)的特殊ID,分別表示列表時(shí)要顯示的和列表中無條目時(shí)要顯示的元素。這樣的話就不需要再編寫代碼來根據(jù)列表是否為空來顯示相應(yīng)元素了。最后,還可以根據(jù)需要,把元素的ID改成便于記憶的名稱這樣在使用時(shí)就更容易記憶。完成所有這些工作后,在Eclipse的主窗口中,就可以看到程序界面的預(yù)覽效果。3.2.3播放模塊播放模塊中在MP3Player.java文件中定義一個(gè)FrontMusic( )和nextMusic( )來實(shí)現(xiàn)上一曲和下一曲的切換;用mMediaPlayer=new mMediaPlayer( )來實(shí)現(xiàn)播放列表的更新;setLooping( )用來實(shí)現(xiàn)是否循環(huán)播放等。界面如下:播放模塊界面有許多的按鈕,如暫停,停止,下一首等,還有歌名的顯示,這些功能的實(shí)現(xiàn)的主程序如下:public class Mp3Info implements Serializableprivate static final long serialVersionUID = 1L;private String id;private String mp3Name;private String mp3Size;private String man;首先定義MP3的名字和大??;在播放界面中會(huì)顯示歌曲的名字和歌唱者的名字;public List getMp3Files(String path) List mp3Infos = new ArrayList( );File file = new File(SDCardRoot );File files = file.listFiles( );讀取目錄中的mp3的名字和大?。籶rivate SeekBar audioVolume = null;定義了音量的大??;在界面中用戶可以調(diào)節(jié)音量的大小,如果音量調(diào)節(jié)為0就會(huì)變成靜音模式;mNextbtn.setOnClickListener(new ImageButton.OnClickListener( ) Override public void onClick(View v) NextMusic( ); );點(diǎn)擊下一首的程序:NextMusic( )定義了下一首個(gè)歌曲,new ImageButton是下一首的按鈕的定義,以下程序是將按鈕與下一首相連接。 mLastbtn.setOnClickListener(new ImageButton.OnClickListener( ) Overridepublic void onClick(View v) TODO Auto-generated method stubLastMusic( ); );點(diǎn)擊上一首的程序:跟前面一樣,Lastmusic定義上一首歌曲。isrun = true;isauto = false;用來判斷歌曲是否在播,viewlrcKLOK.Stop( )是停止播放歌曲的定義,mMediaPlayer.pause( )是暫停歌曲播放的定義。mPausebtn.setOnClickListener(new ImageButton.OnClickListener( ) Overridepublic void onClick(View v) TODO Auto-generated method stubisrun = true;isauto = false;mPausebtn.setVisibility(View.GONE); mStartbtn.setVisibility(View.VISIBLE); / 是否正在播放if (mMediaPlayer.isPlaying( ) viewlrcKLOK.Stop( );mMediaPlayer.pause( );進(jìn)入主界面就會(huì)看到很多按鈕,mPausebtn.setVisibility(View.GONE) 是隱藏暫停按鈕;點(diǎn)擊開始按鈕就是播放當(dāng)前的音樂,mStartbtn.setVisibility(View.VISIBLE)是顯示啟動(dòng)按鈕,點(diǎn)擊下一首會(huì)播放下一個(gè)音樂文件,如果喜歡這首歌,可以選擇下載,下載過程會(huì)看到進(jìn)度條的顯示,播放結(jié)束可以退出程序或選擇別的歌曲。4 測試與分析4.1軟件測試準(zhǔn)備工作在Android SDK 16的模擬器上對MP3播放器的各項(xiàng)功能進(jìn)行調(diào)試和測試。調(diào)試結(jié)束后,將編譯生成的安裝文件拷貝到SD卡,利用Android文件管理器將播放器軟件安裝到OMAP3530開發(fā)板的系統(tǒng)上,將測試用的音樂文件及對應(yīng)的歌詞文件拷貝到SD卡,0MAP3530開發(fā)板上的MP3播放器可以通過文件瀏覽器選擇音樂文件并正常播放。4.2系統(tǒng)測試內(nèi)容概要4.2.1 列表的更新測試1、當(dāng)列表中包含已被刪除、移動(dòng)或者更名的歌曲時(shí),驗(yàn)證列表的更新功能2、開機(jī)時(shí)使用默認(rèn)列表,關(guān)機(jī)后對默認(rèn)列表的目錄進(jìn)行歌曲的添加、刪除操作,驗(yàn)證再開機(jī)后自動(dòng)4.2.2各種格式的歌曲的詳情查看測試1、包括ID3v1、ID3v2信息的MP32、其他格式歌曲的詳情查看測試3、以上的測試中,注意詳情中包含的各項(xiàng)內(nèi)容的正確性,注意內(nèi)容超長情況下的顯示4.2.3測試音樂播放器主頁面的顯示以及一些主要操作1、無歌曲情況下的界面顯示2、有歌曲無歌詞且歌曲名超長的情況下(播放前、播放中、暫停情況)3、有歌曲有歌詞的情況下(播放前

溫馨提示

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

評論

0/150

提交評論