版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
-.--可修編-題目:基于Android平臺的音樂播放器設計報告學生:何雙雙學號:指導教師:鄧江沙目錄TOC\o"1-3"\h\u17132第一章引言176241.1項目背景174631.2編寫目的111487第二章系統(tǒng)需求分析2233372.1功能需求(用例圖分析)2253842.1.1播放器的用例圖2207412.1.2用例分析331379第三章概要設計4221263.1軟件播放流程圖4254703.2軟件類圖57128第四章詳細設計6204394.1MusicInfoController類6270404.1.1.類啟動6215454.1.2.服務綁定activity685354.2MusicInfoController類6138574.2.1獲得播放文件列表7232184.3MusicList類7318394.3.1播放1714.3.2暫停/播放7126724.3.3停止8145374.4MusicPlayerApp類873644.4.1單例模式828091第五章系統(tǒng)實現(xiàn)1012315.1軟件部署10244785.2啟動軟件10300125.3播放界面1128588第六章結論121582附錄一:代碼13189801.獲取全部音頻文件代碼13238062.綁定歌曲列表到listview控件13267923.軟件初始化1460674.音樂播放服務15第一章引言1.1項目背景當今社會的生活節(jié)奏越來越快,人們對手機的要求也越來越高,由于手機市場發(fā)展迅速,使得手機操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場上主要有三個手機操作系統(tǒng),Windowsmobile,symbian,以及谷歌的Android操作系統(tǒng),其中占有開放源代碼優(yōu)勢的Android系統(tǒng)有最大的發(fā)展前景。那么能否在手機上擁有自己編寫的個性音樂播放器呢?能的,谷歌Android系統(tǒng)就能做到。本文的音樂播放器就是基于谷歌Android手機平臺的播放器。Android:是谷歌于2007年公布的開放式源代碼手機系統(tǒng),它的開放性就優(yōu)于其它封閉式的手機系統(tǒng),因此,任何人都可能根據(jù)自己的喜好將手機系統(tǒng)中的所有功能重新編寫。這使得越來越多的人關注這個操作系統(tǒng)。本次作品音樂播放器就是基于Android平臺的。1.2編寫目的現(xiàn)今社會生活緊,而欣賞音樂是其中最好的舒緩壓力的方式之一,本項目的目的是開發(fā)一個可以播放主流音樂文件格式的播放器,本設計實現(xiàn)的主要功能是播放Mp3,Wav多種格式的音樂文件,并且能夠控制播放,暫停,停止,播放列等基本播放控制功能,界面簡明,操作簡單。本項目是一款基于Android手機平臺的音樂播放器,使Android手機擁有個性的多媒體播放器,使手機顯得更生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設計者更加熟練Android的技術和其它在市場上的特點。第二章系統(tǒng)需求分析2.1功能需求(用例圖分析)根據(jù)項目的目標,我們可獲得項目系統(tǒng)的基本需求,以下從不同角度來描述系統(tǒng)的需求,并且使用用例圖來描述,系統(tǒng)的功能需求,我們分成四部分來概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器擴展卡需求。以下分別描述:2.1.1播放器的用例圖假設安裝了音樂播放器的用戶是系統(tǒng)的主要設計對象,其擁有以下操作,啟動軟件、播放音樂、暫停播放、停止播放、退出軟件,其用例圖如下圖2.1播放器基本用例圖2.1.2用例分析用例名稱:啟動軟件參與者:用戶目標:使得用戶啟動軟件并加載手機和sd卡上的音頻文件到播放列表前置條件:無基本事件流:1.用戶啟動軟件2.播放器將播放列表中的當前的歌曲用例名稱:播放參與者:用戶目標:使得用戶可以播放在播放列表中選中的歌曲前置條件:播放器正在運行基本事件流:1.用戶單擊“播放”按鈕2.播放器將播放列表中的當前的歌曲用例名稱:暫停參與者:用戶目標:使得用戶可以暫停正在播放的歌曲前置條件:歌曲正在播放且未停止和暫?;臼录鳎?.用戶單擊“暫停”按鈕2.播放器將暫停當前的歌曲用例名稱:停止參與者:用戶目標:使得用戶可以停止正在播放的歌曲前置條件:歌曲正在播放或暫?;臼录鳎?.用戶單擊“停止”按鈕2.播放器將停止當前播放的歌曲用例名稱:推出參與者:用戶目標:使得用戶退出或者后臺播放音樂前置條件:程序在運行基本事件流:1.用戶按返回鍵2.播放器退出或者進入后臺播放第三章概要設計3.1軟件播放流程圖Step1.啟動軟件后,軟件自動檢索手機和sd卡的音頻文件,并組織顯示成列表.Step2.點擊列表的歌曲名字。Step3.播放音樂。Step4.點擊暫停,音樂暫停Step5.點擊播放轉到step3Step6.點擊停止停止播放音樂Step7.點擊退出,若音樂處于播放狀態(tài),則音樂轉向后臺播放,界面退出。Step8.點擊退戶,若音樂處于暫停或者停止狀態(tài),直接退出。圖3.1音樂播放器流程圖3.2軟件類圖系統(tǒng)設計了4個類,分別是播放音樂的服務類MusicPlayerService;主要用于獲取android系統(tǒng)中的音頻文件,并提供訪問接口的MusicInfoController類;繼承于ListActivity,主要用于顯示歌曲列表的MusicList類和程序的生存類MusicPlayerApp類。音樂播放器音樂播放器類MusicInfoController類MusicList類MusicPlayerApp類MusicPlayerService圖3.2軟件類圖圖3.2音樂播放器類圖第四章詳細設計4.1MusicInfoController類這個類繼承于service,是播放音樂的服務類。播放音樂,暫停音樂,停止播放等操作都封裝在這個類中。主要的執(zhí)行動作有:4.1.1.類啟動onCreate(){mMediaPlayer=newMediaPlayer();//分配一個播放對象 mMediaPlayer.setOnPreparedListener(mPrepareListener);//綁定之前 mMediaPlayer.setOnpletionListener(mpleteListener);//綁定之后}4.1.2.服務綁定activityMediaPlayer.OnpletionListenermpleteListener=newMediaPlayer.OnpletionListener()//實例化一個綁定監(jiān)聽器的匿名類{publicvoidonpletion(MediaPlayermp)//完成綁定后{broadcastEvent(PLAY_PLETED);//廣播消息}};4.2MusicInfoController類這個類主要用于獲取android系統(tǒng)中的音頻文件,并提供訪問接口,它是一個單例類。4.2.1獲得播放文件列表privateCursorquery(Uriuri,String[]prjs,Stringselections,String[]selectArgs,Stringorder){ContentResolverresolver=pApp.getContentResolver();//取得一個連接對象 if(resolver==null){ returnnull; } returnresolver.query(uri,prjs,selections,selectArgs,order); }publicCursorgetAllSongs(){ returnquery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER);//查詢ContentResolver的所有音頻文件 }4.3MusicList類改類繼承于ListActivity,主要用于顯示歌曲列表,并且封裝部分操作,以及與父級目標通信。4.3.1播放protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){//歌曲列表的某項被點擊super.onListItemClick(l,v,position,id);if(mCursor==null||mCursor.getCount()==0){return;}mCursor.moveToPosition(position);//游標移動到當前路徑Stringurl=mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//取得絕對路徑mMusicPlayerService.setDataSource(url);//傳遞絕對路徑mMusicPlayerService.start();//播放音樂}4.3.2暫停/播放mPlayPauseButton.setOnClickListener(newButton.OnClickListener(){publicvoidonClick(Viewv){if(mMusicPlayerService!=null&&mMusicPlayerService.isPlaying()){mMusicPlayerService.pause();//音樂播放的服務暫停mPlayPauseButton.setText(R.string.play);//改變按鈕文字}elseif(mMusicPlayerService!=null){mMusicPlayerService.start();//如果已經(jīng)是暫停,則播放音樂mPlayPauseButton.setText(R.string.pause);//改變文字}}});4.3.3停止mStopButton.setOnClickListener(newButton.OnClickListener(){publicvoidonClick(Viewv){//Performactiononclickif(mMusicPlayerService!=null){mTextView.setVisibility(View.VISIBLE);//改變文字狀態(tài)mPlayPauseButton.setVisibility(View.INVISIBLE);//隱藏按鈕mStopButton.setVisibility(View.INVISIBLE);//隱藏停止按鈕mMusicPlayerService.stop();//后臺音樂停止播放}}});4.4MusicPlayerApp類該類繼承與Application,是程序的生存類。可以標識音樂播放器的生命周期,包括音樂在后臺播放等。4.4.1單例模式publicvoidonCreate() { super.onCreate(); mMusicInfoController=MusicInfoController.getInstance(this);//返回該類的一個唯一實例 } publicMusicInfoControllergetMusicInfoController() { returnmMusicInfoController; }系統(tǒng)實現(xiàn)5.1軟件部署系統(tǒng)編譯生成apk文件,將apk文件拷到手機或者sd卡中,直接打開即可安裝,或者安裝360手機助手通過usb調(diào)試的方式進行安裝。圖5.1軟件圖標5.2啟動軟件啟動軟件后,加載歌曲列表現(xiàn)在這個界面上,如01表示歌曲名,unknown表示歌曲的演唱者圖5.2軟件啟動界面5.3播放界面從加載的歌曲列表中點擊要播放的歌曲,開始播放圖5.3音樂播放界面第六章結論(1)通過對Android手機平臺的音樂播放器軟件的開發(fā),使我對Android音樂播放器系統(tǒng)的整體設計有一個深入的了解,對整個流程也會有一個清晰的認識。開發(fā)Android音樂播放器,要抓住開發(fā)的核心部分,音樂播放器大體由播放主界面、播放列表、菜單、播放設置、文件瀏覽、歌曲搜索六大核心組成。(3)本次程序設計,對播放器的系統(tǒng)結構框架做了精心的構思與設計,采用主要開發(fā)工具是Eclips4.0+Java語言的支持,AndroidDevelopmentTool的插件,和AndroidSDK2.1版本的全面結合,才使整個音樂播放器系統(tǒng)得以實現(xiàn)。附錄一:代碼1獲取全部音頻文件代碼privateCursorquery(Uriuri,String[]prjs,Stringselections,String[]selectArgs,Stringorder){ ContentResolverresolver=pApp.getContentResolver();//取得papp的一個resolver實例if(resolver==null){returnnull; }returnresolver.query(uri,prjs,selections,selectArgs,order); }publicCursorgetAllSongs(){//取得所有音頻文件returnquery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER); }2綁定歌曲列表到listview控件publicvoidbindView(Viewview,Contextcontext,Cursorcursor){ super.bindView(view,context,cursor); TextViewtitleView=(TextView)view.findViewById(android.R.id.text1); TextViewartistView=(TextView)view.findViewById(android.R.id.text2); titleView.setText(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)));//綁定歌曲名 artistView.setText(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)));//綁定演唱者 }3軟件初始化setContentView(R.layout.list_layout);MusicPlayerAppmusicPlayerApp=(MusicPlayerApp)getApplication();//取得一個實例mMusicInfoController=(musicPlayerApp).getMusicInfoController();startService(newIntent(this,MusicPlayerService.class));//啟動服務bindService(newIntent(this,MusicPlayerService.class),mPlaybackConnection,Context.BIND_AUTO_CREATE);//綁定服務mTextView=(TextView)findViewById(R.id.show_text);//取得顯示文本控件mPlayPauseButton=(Button)findViewById(R.id.play_pause_btn);//取得開始和暫??丶StopButton=(Button)findViewById(R.id.stop_btn);//取得停止控件mPlayPauseButton.setOnClickListener(newButton.OnClickListener(){//播放和暫停按鈕的事件綁定publicvoidonClick(Viewv){if(mMusicPlayerService!=null&&mMusicPlayerService.isPlaying()){mMusicPlayerService.pause();//暫停播放mPlayPauseButton.setText(R.string.play);//改變控件文字}elseif(mMusicPlayerService!=null){mMusicPlayerService.start();//服務沒啟動則啟動mPlayPauseButton.setText(R.string.pause);//改變控件文字為暫停}}});mStopButton.setOnClickListener(newButton.OnClickListener(){//停止按鈕的事件綁定publicvoidonClick(Viewv){if(mMusicPlayerService!=null){mTextView.setVisibility(View.VISIBLE);mPlayPauseButton.setVisibility(View.INVISIBLE);//改變播放按鈕為不可見mStopButton.setVisibility(View.INVISIBLE);mMusicPlayerService.stop();//停止播放}}});IntentFilterfilter=newIntentFilter();filter.addAction(MusicPlayerService.PLAYER_PREPARE_END);//filter.addAction(MusicPlayerService.PLAY_PLETED);registerReceiver(mPlayerEvtReceiver,filter);//放入后臺4.音樂播放服務MediaPlayer.OnpletionListenermpleteListener=newMediaPlayer.OnpletionListener()//實例化化一個listener匿名類{publicvoidonpletion(MediaPlayermp)//完成綁定時調(diào)用{broadcastEvent(PLAY_PLETED);//廣播消息}};MediaPlayer.OnPreparedListenermPrepareListener=newMediaPlayer.OnPreparedListener()//綁定錢調(diào)用{publicvoidonPrepared(MediaPlayermp){broadcastEvent(PLAYER_PREPARE_END);//廣播事件}};privatevoidbroadcastEvent(Stringwhat) { Intenti=newIntent(what); sendBroadcast(i);//廣播消息 }publicvoidonCreate() {super.onCreate();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林師范大學《社區(qū)工作》2021-2022學年第一學期期末試卷
- 吉林師范大學《工程力學》2021-2022學年第一學期期末試卷
- 環(huán)保項目儀表電纜安裝方案
- 門窗項目施工進度管理方案
- 住宅維修及改造施工合同
- 交通事故物體打擊應急處置預案
- 吉林大學《無線網(wǎng)絡技術》2021-2022學年期末試卷
- 2024船舶買賣合同樣例
- 房地產(chǎn)開發(fā)承包方案
- 商業(yè)綜合體幕墻防水方案
- 第六單元(單元測試)-2024-2025學年統(tǒng)編版語文六年級上冊
- 2024年貴州銅仁市公開引進千名英才(事業(yè)單位77名)歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 河北省石家莊市第四十一中學2023-2024學年八年級上學期期中數(shù)學試題(解析版)
- 2023-2024學年全國初中八年級上英語人教版期中考卷(含答案解析)
- 《人工智能基礎》課件-AI的前世今生:她從哪里來
- 中醫(yī)師承跟師筆記50篇
- 滬教版四年級上冊期中復習數(shù)學試卷(一)
- 雕塑采購投標方案(技術標)
- 海爾商用空調(diào)產(chǎn)品故障代碼簡明手冊(最終版本)2011.6.1
- 遷鋼煉鋼二期板坯連鑄機設備安裝施工方案
- 精裝房驗房項目表格.doc
評論
0/150
提交評論