基于Android平臺(tái)的音樂(lè)播放器設(shè)計(jì)報(bào)告v3._第1頁(yè)
基于Android平臺(tái)的音樂(lè)播放器設(shè)計(jì)報(bào)告v3._第2頁(yè)
基于Android平臺(tái)的音樂(lè)播放器設(shè)計(jì)報(bào)告v3._第3頁(yè)
基于Android平臺(tái)的音樂(lè)播放器設(shè)計(jì)報(bào)告v3._第4頁(yè)
基于Android平臺(tái)的音樂(lè)播放器設(shè)計(jì)報(bào)告v3._第5頁(yè)
已閱讀5頁(yè),還剩8頁(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、-. z題目: 基于Android平臺(tái)的音樂(lè)播放器設(shè)計(jì)報(bào)告學(xué)生: 何雙雙 指導(dǎo)教師: 鄧江沙目錄TOC o 1-3 h u HYPERLINK l _Toc17132 第一章 引 言 PAGEREF _Toc17132 1 HYPERLINK l _Toc7624 1.1 工程背景 PAGEREF _Toc7624 1 HYPERLINK l _Toc7463 1.2 編寫(xiě)目的 PAGEREF _Toc7463 1 HYPERLINK l _Toc11487 第二章 系統(tǒng)需求分析 PAGEREF _Toc11487 2 HYPERLINK l _Toc23337 2.1 功能需求用例圖分析 P

2、AGEREF _Toc23337 2 HYPERLINK l _Toc25384 2.1.1 播放器的用例圖 PAGEREF _Toc25384 2 HYPERLINK l _Toc20741 2.1.2用例分析 PAGEREF _Toc20741 3 HYPERLINK l _Toc31379 第三章 概要設(shè)計(jì) PAGEREF _Toc31379 4 HYPERLINK l _Toc22126 3.1軟件播放流程圖 PAGEREF _Toc22126 4 HYPERLINK l _Toc25470 3.2 軟件類圖 PAGEREF _Toc25470 5 HYPERLINK l _Toc71

3、28 第四章 詳細(xì)設(shè)計(jì) PAGEREF _Toc7128 6 HYPERLINK l _Toc20439 4.1MusicInfoController類 PAGEREF _Toc20439 6 HYPERLINK l _Toc27040 4.1.1.類啟動(dòng) PAGEREF _Toc27040 6 HYPERLINK l _Toc21545 4.1.2.效勞綁定activity PAGEREF _Toc21545 6 HYPERLINK l _Toc8535 4.2MusicInfoController類 PAGEREF _Toc8535 6 HYPERLINK l _Toc13857 4.2.

4、1獲得播放文件列表 PAGEREF _Toc13857 7 HYPERLINK l _Toc23218 4.3MusicList類 PAGEREF _Toc23218 7 HYPERLINK l _Toc31839 4.3.1播放 PAGEREF _Toc31839 7 HYPERLINK l _Toc171 4.3.2暫停/播放 PAGEREF _Toc171 7 HYPERLINK l _Toc12672 4.3.3停頓 PAGEREF _Toc12672 8 HYPERLINK l _Toc14537 4.4MusicPlayerApp類 PAGEREF _Toc14537 8 HYPE

5、RLINK l _Toc7364 4.4.1單例模式 PAGEREF _Toc7364 8 HYPERLINK l _Toc28091 第五章 系統(tǒng)實(shí)現(xiàn) PAGEREF _Toc28091 10 HYPERLINK l _Toc1231 5.1軟件部署 PAGEREF _Toc1231 10 HYPERLINK l _Toc24478 5.2啟動(dòng)軟件 PAGEREF _Toc24478 10 HYPERLINK l _Toc30012 5.3播放界面 PAGEREF _Toc30012 11 HYPERLINK l _Toc28588 第六章 結(jié) 論 PAGEREF _Toc28588 12

6、HYPERLINK l _Toc1582 附錄一: 代碼 PAGEREF _Toc1582 13 HYPERLINK l _Toc18980 1.獲取全部音頻文件代碼 PAGEREF _Toc18980 13 HYPERLINK l _Toc23806 2.綁定歌曲列表到listview控件 PAGEREF _Toc23806 13 HYPERLINK l _Toc26792 3.軟件初始化 PAGEREF _Toc26792 14 HYPERLINK l _Toc6067 4.音樂(lè)播放效勞 PAGEREF _Toc6067 15第一章 引 言1.1 工程背景當(dāng)今社會(huì)的生活節(jié)奏越來(lái)越快,人們對(duì)

7、手機(jī)的要求也越來(lái)越高,由于手機(jī)市場(chǎng)開(kāi)展迅速,使得手機(jī)操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場(chǎng)上主要有三個(gè)手機(jī)操作系統(tǒng),Windows mobile,symbian,以及谷歌的Android操作系統(tǒng),其中占有開(kāi)放源代碼優(yōu)勢(shì)的Android系統(tǒng)有最大的開(kāi)展前景。則能否在手機(jī)上擁有自己編寫(xiě)的個(gè)性音樂(lè)播放器呢?能的,谷歌Android系統(tǒng)就能做到。本文的音樂(lè)播放器就是基于谷歌Android手機(jī)平臺(tái)的播放器。Android:是谷歌于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)。本

8、次作品音樂(lè)播放器就是基于Android平臺(tái)的。1.2 編寫(xiě)目的現(xiàn)今社會(huì)生活緊,而欣賞音樂(lè)是其中最好的舒緩壓力的方式之一,本工程的目的是開(kāi)發(fā)一個(gè)可以播放主流音樂(lè)文件格式的播放器,本設(shè)計(jì)實(shí)現(xiàn)的主要功能是播放Mp3,Wav多種格式的音樂(lè)文件,并且能夠控制播放,暫停,停頓,播放列等根本播放控制功能,界面簡(jiǎn)明,操作簡(jiǎn)單。 本工程是一款基于Android手機(jī)平臺(tái)的音樂(lè)播放器,使Android手機(jī)擁有個(gè)性的多媒體播放器,使手機(jī)顯得更生動(dòng)靈活化,與人們更為接近,讓手機(jī)主人隨時(shí)隨地處于音樂(lè)視頻的旋律之中。使人們的生活更加多樣化。也使設(shè)計(jì)者更加熟練Android的技術(shù)和其它在市場(chǎng)上的特點(diǎn)。第二章 系統(tǒng)需求分析2.

9、1 功能需求用例圖分析根據(jù)工程的目標(biāo),我們可獲得工程系統(tǒng)的根本需求,以下從不同角度來(lái)描述系統(tǒng)的需求,并且使用用例圖來(lái)描述,系統(tǒng)的功能需求,我們分成四局部來(lái)概括,即播放器的根本控制需要,播放列表管理需求,播放器友好性需求和播放器擴(kuò)展卡需求。以下分別描述:2.1.1 播放器的用例圖假設(shè)安裝了音樂(lè)播放器的用戶是系統(tǒng)的主要設(shè)計(jì)對(duì)象,其擁有以下操作,啟動(dòng)軟件、播放音樂(lè)、暫停播放、停頓播放、退出軟件,其用例圖如下圖2.1 播放器根本用例圖2.1.2用例分析用例名稱:?jiǎn)?dòng)軟件參與者:用戶目標(biāo):使得用戶啟動(dòng)軟件并加載手機(jī)和sd卡上的音頻文件到播放列表前置條件:無(wú)根本領(lǐng)件流:1.用戶啟動(dòng)軟件 2.播放器將播放列

10、表中的當(dāng)前的歌曲用例名稱:播放參與者:用戶目標(biāo):使得用戶可以播放在播放列表中選中的歌曲前置條件:播放器正在運(yùn)行根本領(lǐng)件流:1.用戶單擊播放按鈕 2.播放器將播放列表中的當(dāng)前的歌曲用例名稱:暫停參與者:用戶目標(biāo):使得用戶可以暫停正在播放的歌曲前置條件:歌曲正在播放且未停頓和暫停根本領(lǐng)件流:1.用戶單擊暫停按鈕 2.播放器將暫停當(dāng)前的歌曲用例名稱:停頓參與者:用戶目標(biāo):使得用戶可以停頓正在播放的歌曲前置條件:歌曲正在播放或暫停根本領(lǐng)件流:1.用戶單擊停頓按鈕 2.播放器將停頓當(dāng)前播放的歌曲用例名稱:推出參與者:用戶目標(biāo):使得用戶退出或者后臺(tái)播放音樂(lè)前置條件:程序在運(yùn)行根本領(lǐng)件流:1.用戶按返回鍵

11、2.播放器退出或者進(jìn)入后臺(tái)播放第三章 概要設(shè)計(jì)3.1軟件播放流程圖Step1.啟動(dòng)軟件后,軟件自動(dòng)檢索手機(jī)和sd卡的音頻文件,并組織顯示成列表.Step2.點(diǎn)擊列表的歌曲名字。Step3.播放音樂(lè)。Step4.點(diǎn)擊暫停,音樂(lè)暫停Step5.點(diǎn)擊播放 轉(zhuǎn)到step3Step6.點(diǎn)擊停頓 停頓播放音樂(lè)Step7.點(diǎn)擊退出,假設(shè)音樂(lè)處于播放狀態(tài),則音樂(lè)轉(zhuǎn)向后臺(tái)播放,界面退出。Step8.點(diǎn)擊退戶,假設(shè)音樂(lè)處于暫?;蛘咄nD狀態(tài),直接退出。圖3.1音樂(lè)播放器流程圖3.2 軟件類圖系統(tǒng)設(shè)計(jì)了4個(gè)類,分別是播放音樂(lè)的效勞類MusicPlayerService;主要用于獲取android系統(tǒng)中的音頻文件,并提

12、供接口的MusicInfoController類;繼承于ListActivity,主要用于顯示歌曲列表的MusicList類和程序的生存類MusicPlayerApp類。音樂(lè)播放器類MusicInfoController類MusicList類MusicPlayerApp類MusicPlayerService圖3.2 軟件類圖圖3.2音樂(lè)播放器類圖第四章 詳細(xì)設(shè)計(jì)4.1MusicInfoController類這個(gè)類繼承于service,是播放音樂(lè)的效勞類。播放音樂(lè),暫停音樂(lè),停頓播放等操作都封裝在這個(gè)類中。主要的執(zhí)行動(dòng)作有:4.1.1.類啟動(dòng)onCreate() mMediaPlayer = n

13、ew MediaPlayer();/分配一個(gè)播放對(duì)象mMediaPlayer.setOnPreparedListener(mPrepareListener);/綁定之前mMediaPlayer.setOnpletionListener(mpleteListener);/綁定之后4.1.2.效勞綁定activityMediaPlayer.OnpletionListener mpleteListener = new MediaPlayer.OnpletionListener() /實(shí)例化一個(gè)綁定監(jiān)聽(tīng)器的匿名類 public void onpletion(MediaPlayer mp) /完成綁定后

14、 broadcastEvent(PLAY_PLETED);/播送消息 ;4.2MusicInfoController類這個(gè)類主要用于獲取android系統(tǒng)中的音頻文件,并提供接口,它是一個(gè)單例類。4.2.1獲得播放文件列表private Cursor query(Uri uri, String prjs, String selections, String selectArgs, String order)ContentResolver resolver = pApp.getContentResolver();/取得一個(gè)連接對(duì)象if (resolver = null)return null;r

15、eturn resolver.query(uri, prjs, selections, selectArgs, order);public Cursor getAllSongs()return query(MediaStore.Audio.Media.E*TERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);/查詢ContentResolver 的所有音頻文件4.3MusicList類改類繼承于ListActivity,主要用于顯示歌曲列表,并且封裝局部操作,以及與父級(jí)目標(biāo)通信。4.3.

16、1播放 protected void onListItemClick(ListView l, View v, int position, long id) /歌曲列表的*項(xiàng)被點(diǎn)擊 super.onListItemClick(l, v, position, id); if (mCursor = null |mCursor.getCount() = 0) return; mCursor.moveToPosition(position);/游標(biāo)移動(dòng)到當(dāng)前路徑 String url = mCursor.getString(mCursor .getColumnInde*OrThrow(MediaStor

17、e.Audio.Media.DATA);/取得絕對(duì)路徑 mMusicPlayerService.setDataSource(url);/傳遞絕對(duì)路徑 mMusicPlayerService.start();/播放音樂(lè) 4.3.2暫停/播放 mPlayPauseButton.setOnClickListener(new Button.OnClickListener() public void onClick(View v) if (mMusicPlayerService != null & mMusicPlayerService.isPlaying() mMusicPlayerService.p

18、ause();/音樂(lè)播放的效勞暫停 mPlayPauseButton.setTe*t(R.string.play);/改變按鈕文字 else if (mMusicPlayerService != null) mMusicPlayerService.start();/如果已經(jīng)是暫停,則播放音樂(lè) mPlayPauseButton.setTe*t(R.string.pause);/改變文字 );4.3.3停頓 mStopButton.setOnClickListener(new Button.OnClickListener() public void onClick(View v) / Perfor

19、m action on click if (mMusicPlayerService != null ) mTe*tView.setVisibility(View.VISIBLE);/改變文字狀態(tài) mPlayPauseButton.setVisibility(View.INVISIBLE);/隱藏按鈕 mStopButton.setVisibility(View.INVISIBLE);/隱藏停頓按鈕 mMusicPlayerService.stop();/后臺(tái)音樂(lè)停頓播放 );4.4MusicPlayerApp類該類繼承與Application,是程序的生存類??梢詷?biāo)識(shí)音樂(lè)播放器的生命周期,包括

20、音樂(lè)在后臺(tái)播放等。4.4.1單例模式public void onCreate()super.onCreate();mMusicInfoController = MusicInfoController.getInstance(this); /返回該類的一個(gè)唯一實(shí)例public MusicInfoController getMusicInfoController()return mMusicInfoController;系統(tǒng)實(shí)現(xiàn)5.1軟件部署系統(tǒng)編譯生成apk文件,將apk文件拷到手機(jī)或者sd卡中,直接翻開(kāi)即可安裝,或者安裝360手機(jī)助手通過(guò)usb調(diào)試的方式進(jìn)展安裝。圖5.1軟件圖標(biāo)5.2啟動(dòng)軟件

21、啟動(dòng)軟件后,加載歌曲列表現(xiàn)在這個(gè)界面上,如01表示歌曲名,unknown表示歌曲的演唱者圖5.2軟件啟動(dòng)界面5.3播放界面從加載的歌曲列表中點(diǎn)擊要播放的歌曲,開(kāi)場(chǎng)播放圖5.3 音樂(lè)播放界面第六章 結(jié) 論(1) 通過(guò)對(duì)Android手機(jī)平臺(tái)的音樂(lè)播放器軟件的開(kāi)發(fā),使我對(duì)Android音樂(lè)播放器系統(tǒng)的整體設(shè)計(jì)有一個(gè)深入的了解,對(duì)整個(gè)流程也會(huì)有一個(gè)清晰的認(rèn)識(shí)。開(kāi)發(fā)Android音樂(lè)播放器,要抓住開(kāi)發(fā)的核心局部,音樂(lè)播放器大體由播放主界面、播放列表、菜單、播放設(shè)置、文件瀏覽、歌曲搜索六大核心組成。(3) 本次程序設(shè)計(jì),對(duì)播放器的系統(tǒng)構(gòu)造框架做了精心的構(gòu)思與設(shè)計(jì),采用主要開(kāi)發(fā)工具是Eclips4.0+J

22、ava語(yǔ)言的支持,Android Development Tool的插件,和Android SDK2.1版本的全面結(jié)合,才使整個(gè)音樂(lè)播放器系統(tǒng)得以實(shí)現(xiàn)。附錄一: 代碼1獲取全部音頻文件代碼private Cursor query(Uri uri, String prjs, String selections, String selectArgs, String order)ContentResolver resolver = pApp.getContentResolver();/取得papp的一個(gè)resolver實(shí)例if (resolver = null)returnnull;return r

23、esolver.query(uri, prjs, selections, selectArgs, order);public Cursor getAllSongs() /取得所有音頻文件return query(MediaStore.Audio.Media.E*TERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);2綁定歌曲列表到listview控件publicvoid bindView(View view, Conte*t conte*t, Cursor cursor) super.b

24、indView(view, conte*t, cursor);Te*tView titleView = (Te*tView) view.findViewById(android.R.id.te*t1);Te*tView artistView = (Te*tView) view.findViewById(android.R.id.te*t2);titleView.setTe*t(cursor.getString(cursor.getColumnInde*OrThrow(MediaStore.Audio.Media.TITLE);/綁定歌曲名artistView.setTe*t(cursor.ge

25、tString(cursor.getColumnInde*OrThrow(MediaStore.Audio.Media.ARTIST);/綁定演唱者3軟件初始化 setContentView(R.layout.list_layout); MusicPlayerApp musicPlayerApp=(MusicPlayerApp)getApplication();/取得一個(gè)實(shí)例mMusicInfoController = (musicPlayerApp).getMusicInfoController(); startService(new Intent(this,MusicPlayerServi

26、ce.class); /啟動(dòng)效勞 bindService(new Intent(this,MusicPlayerService.class), mPlaybackConnection, Conte*t.BIND_AUTO_CREATE);/綁定效勞mTe*tView = (Te*tView)findViewById(R.id.show_te*t);/取得顯示文本控件mPlayPauseButton = (Button) findViewById(R.id.play_pause_btn);/取得開(kāi)場(chǎng)和暫??丶StopButton = (Button) findViewById(R.id.sto

27、p_btn);/取得停頓控件mPlayPauseButton.setOnClickListener(new Button.OnClickListener() /播放和暫停按鈕的事件綁定publicvoid onClick(View v) if (mMusicPlayerService != null & mMusicPlayerService.isPlaying() mMusicPlayerService.pause();/暫停播放mPlayPauseButton.setTe*t(R.string.play);/改變控件文字 elseif (mMusicPlayerService != nul

28、l)mMusicPlayerService.start();/效勞沒(méi)啟動(dòng)則啟動(dòng)mPlayPauseButton.setTe*t(R.string.pause);/改變控件文字為暫停 );mStopButton.setOnClickListener(new Button.OnClickListener() /停頓按鈕的事件綁定publicvoid onClick(View v) if (mMusicPlayerService != null ) mTe*tView.setVisibility(View.VISIBLE);mPlayPauseButton.setVisibility(View.IN

29、VISIBLE);/改變播放按鈕為不可見(jiàn)mStopButton.setVisibility(View.INVISIBLE);mMusicPlayerService.stop();/停頓播放 ); IntentFilter filter = new IntentFilter(); filter.addAction(MusicPlayerService.PLAYER_PREPARE_END);/ filter.addAction(MusicPlayerService.PLAY_PLETED); registerReceiver(mPlayerEvtReceiver, filter);/放入后臺(tái)4.

30、音樂(lè)播放效勞MediaPlayer.OnpletionListener mpleteListener = new MediaPlayer.OnpletionListener() /實(shí)例化化一個(gè)listener匿名類 publicvoid onpletion(MediaPlayer mp) /完成綁定時(shí)調(diào)用 broadcastEvent(PLAY_PLETED);/播送消息 ; MediaPlayer.OnPreparedListener mPrepareListener = new MediaPlayer.OnPreparedListener() /綁定錢(qián)調(diào)用 publicvoid onPrepared(MediaPlayer mp) broadcastEvent(PLAYER_PREPARE_END);/播送事件 ; privatevoid broadcastEvent(String what)Intent i = new In

溫馨提示

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