版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.1項(xiàng)目背景 在研究了各種市場(chǎng)上流行的手機(jī)播放器,了解它們各自的插件及編碼方式,還有各種播放器播放的特別格式文件,分析各種編碼的優(yōu)缺點(diǎn)以及各種播放器本身存在的缺陷和特點(diǎn),編寫(xiě)出功能實(shí)用,使用方便快捷的播放器。目前已經(jīng)實(shí)現(xiàn)的功能有能播放常見(jiàn)音頻文件的功能,如MP3,WAV,等,擁有播放菜單,能選擇播放清單,具備一般播放器的功能,如快進(jìn),快退,音量調(diào)節(jié)等。播放模式也比較完善,有單曲,順序,循環(huán),隨機(jī)播放等模式1.1項(xiàng)目背景 在研究了各種市場(chǎng)上流行的手機(jī)播放器,了解它們11.2編寫(xiě)目的現(xiàn)今社會(huì)生活緊張,而欣賞音樂(lè)是其中最好的舒緩壓力的方式之一,本項(xiàng)目的目的是開(kāi)發(fā)一個(gè)可以播放主流音樂(lè)文件格式的播放器,本設(shè)計(jì)的實(shí)現(xiàn)的這主要功能是播放Mp3格式的音樂(lè)文件,并且能夠控制播放,暫停,停止,上一曲,下一曲,音量調(diào)節(jié),視覺(jué)外觀,播放列表和歌曲文件的管理操作等多種播放控制功能,界面簡(jiǎn)明,操作簡(jiǎn)單。1.2編寫(xiě)目的現(xiàn)今社會(huì)生活緊張,而欣賞音樂(lè)是其中最好的舒22.1功能需求(用例圖分析)2.1功能需求(用例圖分析)根據(jù)項(xiàng)目的目標(biāo),我們可獲得項(xiàng)目系統(tǒng)的基本需求,以下從不同角度來(lái)描述系統(tǒng)的需求,并且使用用例圖來(lái)描述,系統(tǒng)的功能需求,我們分成四部分來(lái)概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器擴(kuò)展卡需求。以下分別描述:2.1功能需求(用例圖分析)2.1功能需求(用例圖分析)3 2.1.1播放器的基本控制需求 2.1.1播放器的基本控制需求4 2.1.2播放清單列表管理需求
當(dāng)用戶(hù)選中列表中某一項(xiàng)歌曲,就有的需求: 2.1.2播放清單列表管理需求
當(dāng)用戶(hù)選中列表中某一項(xiàng)52.1.3播放友好性需求2.1.3播放友好性需求62.1.4播放器擴(kuò)展卡需求2.1.4播放器擴(kuò)展卡需求72.1.5功能需求(時(shí)序圖)分析2.1.5功能需求(時(shí)序圖)分析8Android數(shù)據(jù)庫(kù)設(shè)計(jì)
3.1數(shù)據(jù)庫(kù)及字段屬性設(shè)計(jì)
表包括Music_List,Music,Music2主要是保存歌曲名字、路徑 字段說(shuō)明:Id歌曲id號(hào)Name歌曲名字Path歌曲路徑Android數(shù)據(jù)庫(kù)設(shè)計(jì)
3.1數(shù)據(jù)庫(kù)及字段屬性設(shè)計(jì)
表93.2數(shù)據(jù)庫(kù)連接 Android中自帶SQLite數(shù)據(jù)庫(kù),這是一個(gè)十分小型的數(shù)據(jù)庫(kù),這樣正適合Android這種移動(dòng)平臺(tái)使用。Android數(shù)據(jù)庫(kù)存儲(chǔ)的位置data/data/<項(xiàng)目文件夾>/databases/目錄下Android是利用SQLiteOpenHelper數(shù)據(jù)庫(kù)幫助類(lèi)來(lái)進(jìn)行對(duì)數(shù)據(jù)庫(kù)的創(chuàng)建和操作。程序中數(shù)據(jù)庫(kù)類(lèi)為DataBaseextendsSQLiteOpenHelper(繼承關(guān)系)。3.2數(shù)據(jù)庫(kù)連接 Android中自帶SQLite數(shù)據(jù)庫(kù),103.2.1創(chuàng)建數(shù)據(jù)庫(kù) publicclassDataBaseextendsSQLiteOpenHelper{ /*構(gòu)造方法,創(chuàng)建數(shù)據(jù)庫(kù)和表*/ publicDataBase(Contextcontext){ super(context,DATABASE_NAME,null,VERSION); }
publicvoidonCreate(SQLiteDatabasedb){ try{
}catch(Exceptione){
} } publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
onCreate(db) } }
3.2.1創(chuàng)建數(shù)據(jù)庫(kù) publicclassDataB113.2.2操作數(shù)據(jù)庫(kù)
Android對(duì)數(shù)據(jù)庫(kù)的操作主要有插入、刪除、更新、查詢(xún)操作,在進(jìn)行任何操作時(shí)都必須指定一個(gè)關(guān)鍵字,才能對(duì)相應(yīng)的表進(jìn)行數(shù)據(jù)操作,這里我們指定的是path關(guān)鍵字。3.2.2操作數(shù)據(jù)庫(kù) 123.2.3數(shù)據(jù)查詢(xún)和顯示 程序是利用Cursor游標(biāo)類(lèi)指向數(shù)據(jù)表中的某一項(xiàng),然后進(jìn)行查詢(xún)數(shù)據(jù),數(shù)據(jù)顯示使用的是專(zhuān)門(mén)的數(shù)據(jù)庫(kù)適配器SimpleCursorAdapter3.2.3數(shù)據(jù)查詢(xún)和顯示 程序是利用Cursor游標(biāo)類(lèi)指向13Android項(xiàng)目MusicPlayer介紹Android的四大基本組件:Activity(活動(dòng)),Service(服務(wù)),BroadcastReceiver(廣播),ContentProvider(內(nèi)容提供者),各組件之間要進(jìn)行切換需要一個(gè)意圖或企圖Intent類(lèi),通過(guò)啟動(dòng)StartIntent()方法來(lái)使各組件進(jìn)行Activity的跳轉(zhuǎn),通過(guò)啟動(dòng)StartService是()方法來(lái)啟動(dòng)服務(wù),通過(guò)stopServices()方法來(lái)停止服務(wù)。Android的五大布局方式:LinearLayout(線性布局)FrameLayout(幀布局)TableLayout(表格布局)AbsoluteLayout(絕對(duì)布局)RelativeLayout(相對(duì)布局)五種布局方式可以相互嵌套,Android各種漂亮的界面都是通過(guò)嵌套布局而實(shí)現(xiàn)的。Android的線程,以及線程之間通信的中介:Handler類(lèi)Android數(shù)據(jù)庫(kù):在第三部分已經(jīng)介紹過(guò)了。這里不再介紹Android配置文件:AndroidManifest.Xml及res資源文件中各種屬性布局方式引用的資源等Android系統(tǒng)將插件ADT集成到了Eclipse工具上,因此,一個(gè)Android程序啟動(dòng)后,系統(tǒng)會(huì)啟動(dòng)一個(gè)模擬器(Emulator)(圖4.7),該模擬器是一款手機(jī)板的樣式,擁有手機(jī)硬件的基本操作。我們也可以將右邊的鍵盤(pán)通過(guò)代碼屬性設(shè)置將其隱藏,界面的大小可自由設(shè)定。Android項(xiàng)目MusicPlayer介紹Android14 4.4.2Android工程程序結(jié)構(gòu) 4.4.2Android工程程序結(jié)構(gòu)15音樂(lè)播放器代碼結(jié)構(gòu)音樂(lè)播放器代碼結(jié)構(gòu)165.播放器系統(tǒng)功能詳細(xì)設(shè)計(jì)
5.1音樂(lè)播放器主界面功能實(shí)現(xiàn)播放器主界面5.播放器系統(tǒng)功能詳細(xì)設(shè)計(jì)
5.1音樂(lè)播放器主界面功能實(shí)現(xiàn)播17 5.1.2播放界面音軌的實(shí)現(xiàn)publicvoidhandleMessage(Messagemsg){ if(mp!=null&&misplaying){ intcurpoint=mp.getCurrentPosition(); time_time=curpoint; total_time=totalpoint; seekbar.setProgress(curpoint); settotal_time(total_time); settime_time(time_time); } } 5.1.2播放界面音軌的實(shí)現(xiàn)publicvoidha18拖動(dòng)進(jìn)度條可以實(shí)現(xiàn)快進(jìn)和快退的功能實(shí)現(xiàn)代碼如下:seekbar.setOnSeekBarChangeListener(newOnSeekBarChangeListener()//拖動(dòng)進(jìn)度條事件響應(yīng) {publicvoidonProgressChanged(SeekBarseekBar,intprogress, } } publicvoidonStartTrackingTouch(SeekBarseekBar){}publicvoidonStopTrackingTouch(SeekBarseekBar){ } });拖動(dòng)進(jìn)度條可以實(shí)現(xiàn)快進(jìn)和快退的功能實(shí)現(xiàn)代碼如下:seekba19 5.1.2播放器播放、暫停、停止等功能
5.1.2播放器播放、暫停、停止等功能 20 android的媒體播放原理:android源程序已經(jīng)為我們封裝好了一個(gè)接口類(lèi),叫MediaPlayer。該接口在執(zhí)行行需要一個(gè)數(shù)據(jù)源,通過(guò)如下四個(gè)步驟: 第一步:MediaPlayer.reset();復(fù)位操作,為以后的媒體準(zhǔn)備播放作準(zhǔn)備。 第二步:傳入歌曲數(shù)據(jù)源,這里也是一個(gè)數(shù)據(jù)流MediaPlayer.setDataSource(Stringpath);參數(shù)需要傳一個(gè)路徑,該接口類(lèi)在收到路徑后將其轉(zhuǎn)化為數(shù)據(jù)源。 第三步:準(zhǔn)備播放數(shù)據(jù)源,調(diào)用方法MediaPlayer.Prepare(); 第四步:MediaPlayer.Start();播放數(shù)據(jù)源,該數(shù)據(jù)源播放后,不再與程序有關(guān),需要用MediaPlayer.Stop()方法讓其停止或MediaPlayer.Start();讓其啟動(dòng); android的媒體播放原理:android源程序已經(jīng)為我215.1.3設(shè)置播放模式功能界面效果如下圖:界面實(shí)現(xiàn)如下代碼所示:/**Menu菜單設(shè)置 */publicbooleanonCreateOptionsMenu(Menumenu){ menu.add(0,0,1,"關(guān)于"); menu.add(0,1,1,"退出"); menu.add(1,2,1,"順序循環(huán)"); } 播放模式功能代碼結(jié)構(gòu)實(shí)現(xiàn)如下:(具體見(jiàn)附錄) publicvoidsingle_play(){} publicvoidqueue_play(){}5.1.3設(shè)置播放模式功能界面效果如下圖:界面實(shí)現(xiàn)如下代碼所225.2播放列表功能5.2播放列表功能23界面列表事件響應(yīng)如下protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){ finalMyDialogmydialog=newMyDialog(FileListActivity.this,"操作選項(xiàng)"); mydialog.show(); mydialog.listView.setOnItemClickListener(newOnItemClickListener(){ publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,longarg3){ mydialog.cancel();}}界面列表事件響應(yīng)如下protectedvoidonLis245.3對(duì)話(huà)框功能5.3對(duì)話(huà)框功能25具體實(shí)現(xiàn)該對(duì)話(huà)框的代碼結(jié)構(gòu)如下:publicclassMyDialogextendsDialog{@Override protectedvoidonCreate(BundlesavedInstanceState){menuList=CreateMenu();CreateListView(menuList); }}publicList<DiaLogMenu>CreateMenu(){}publicvoidCreateListView(List<DiaLogMenu>menuList){}具體實(shí)現(xiàn)該對(duì)話(huà)框的代碼結(jié)構(gòu)如下:265.4數(shù)據(jù)存儲(chǔ)方式SQLiteDatabase類(lèi)SQLiteOpenHelper類(lèi)5.4數(shù)據(jù)存儲(chǔ)方式SQLiteDatabase類(lèi)SQLit275.5AndroidService本程序使用了Service功能實(shí)現(xiàn)播放,當(dāng)Activity被銷(xiāo)毀后,后臺(tái)任然在進(jìn)行音樂(lè)的播放,并且點(diǎn)擊暫停后再點(diǎn)擊退出,可以實(shí)現(xiàn)Service的摧毀。5.5AndroidService28代碼結(jié)構(gòu)實(shí)現(xiàn)如下:publicclassPlayerServiceextendsService{@Override publicIBinderonBind(Intentintent){ //TODOA
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度曹瑞與張麗離婚協(xié)議中公司股權(quán)分割及轉(zhuǎn)讓協(xié)議3篇
- 2024美食盛宴商業(yè)合作伙伴合同版B版
- 2025年度漁業(yè)資源承包與可持續(xù)發(fā)展合同4篇
- 2025年度體育場(chǎng)館食堂承包合同范本3篇
- 2025年度生物科技研發(fā)公司部分股權(quán)出售合同3篇
- 2025年度智慧社區(qū)建設(shè)承包合同股東內(nèi)部經(jīng)營(yíng)協(xié)議4篇
- 2025年度潯購(gòu)F000353632生鮮產(chǎn)品展示冰柜采購(gòu)合同3篇
- 2025年度水產(chǎn)養(yǎng)殖蟲(chóng)害綜合防控技術(shù)合同4篇
- 職業(yè)教育培訓(xùn)需求分析課件
- 2025年幼兒園食堂承包及幼兒營(yíng)養(yǎng)餐服務(wù)合同4篇
- 火災(zāi)安全教育觀后感
- 農(nóng)村自建房屋安全協(xié)議書(shū)
- 快速康復(fù)在骨科護(hù)理中的應(yīng)用
- 國(guó)民經(jīng)濟(jì)行業(yè)分類(lèi)和代碼表(電子版)
- ICU患者外出檢查的護(hù)理
- 公司收購(gòu)設(shè)備合同范例
- 廣東省潮州市2023-2024學(xué)年高二上學(xué)期語(yǔ)文期末考試試卷(含答案)
- 2024年光伏發(fā)電項(xiàng)目EPC總包合同
- 子女放棄房產(chǎn)繼承協(xié)議書(shū)
- 氧化還原反應(yīng)配平專(zhuān)項(xiàng)訓(xùn)練
- 試卷(完整版)python考試復(fù)習(xí)題庫(kù)復(fù)習(xí)知識(shí)點(diǎn)試卷試題
評(píng)論
0/150
提交評(píng)論