簡(jiǎn)易音樂(lè)播放器報(bào)告

上傳人:1888****888 文檔編號(hào):36469880 上傳時(shí)間:2021-10-31 格式:DOC 頁(yè)數(shù):18 大小:714.43KB
收藏 版權(quán)申訴 舉報(bào) 下載
簡(jiǎn)易音樂(lè)播放器報(bào)告_第1頁(yè)
第1頁(yè) / 共18頁(yè)
簡(jiǎn)易音樂(lè)播放器報(bào)告_第2頁(yè)
第2頁(yè) / 共18頁(yè)
簡(jiǎn)易音樂(lè)播放器報(bào)告_第3頁(yè)
第3頁(yè) / 共18頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《簡(jiǎn)易音樂(lè)播放器報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《簡(jiǎn)易音樂(lè)播放器報(bào)告(18頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 音樂(lè)播放器報(bào)告書(shū) 項(xiàng)目名稱(chēng):簡(jiǎn)易音樂(lè)播放器 小組編號(hào):E 小組成員:郭元坤、邊東東、 牛孟強(qiáng)、邢棕、王超 目錄 第1章 項(xiàng)目組詳情 1 第2章 系統(tǒng)需求分析 1 2.1 功能需求 1 2.1.1 播放器的基本控制需求 1 2.1.2 功能需求分析 2

2、 2.2 系統(tǒng)結(jié)構(gòu)圖和流程圖 2 2.3 系統(tǒng)界面需求 3 第3章 詳細(xì)設(shè)計(jì) 3 3.1 界面設(shè)計(jì) 3 3.1.1 播放器的進(jìn)入界面 3 3.1.2 播放器主界面 6 3.2 功能實(shí)現(xiàn) 7 3.2.1 播放器音軌的實(shí)現(xiàn) 7 3.2.2 播放器播放、暫停等功能 8 3.2.3 數(shù)據(jù)共享機(jī)制 10 第4章 總結(jié) 12 第1章 項(xiàng)目組詳情 E組: 組長(zhǎng):郭元坤 組員:邊東東、牛孟強(qiáng)、邢棕、王超 小組成員分工情況: 組長(zhǎng)郭元坤主要研究音樂(lè)播放器系統(tǒng)的需求分析兼讀取SD信息中的.mp3文件開(kāi)發(fā)。而其它功能實(shí)現(xiàn)是由邊東東、牛孟強(qiáng)、邢棕、王超來(lái)實(shí)現(xiàn)的。其各自的負(fù)責(zé)的主

3、要分工如下: 邊東東:音樂(lè)播放界面和音樂(lè)的播放、暫停、上一曲、下一曲,音軌是由我們和邊東東、牛孟強(qiáng)實(shí)現(xiàn)的。 牛孟強(qiáng):把從SD卡中讀取到的.mp3文件通過(guò)列表的方式顯示在主頁(yè)上,還有菜單功能的實(shí)現(xiàn)。包括退出功能和搜索音樂(lè)文件功能 邢棕和王超:主要負(fù)責(zé)音樂(lè)播放器系統(tǒng)的“設(shè)置”界面和功能實(shí)現(xiàn),包括歌詞圖片的下載和顯示還實(shí)現(xiàn)了定時(shí)退出的功能。 第2章 系統(tǒng)需求分析 2.1 功能需求 2.1.1 播放器的基本控制需求 根據(jù)項(xiàng)目的目標(biāo),我們們可獲得項(xiàng)目系統(tǒng)的基本需求,一下從不同的角度來(lái)描述系統(tǒng)的需求,并且使用用戶(hù)用例圖來(lái)描述,系統(tǒng)的功能需求,我們們分成兩部分來(lái)概括,即播放器的基本控制需要,

4、播放器友好界面需求。 播 放 暫停 停止 上一曲 下一曲 在播放器正在運(yùn)行時(shí),用戶(hù)單擊“播放”按鈕,播放器將播放選中的播放列表中的音樂(lè),并同時(shí)顯示當(dāng)前進(jìn)度;當(dāng)歌曲未暫?;蛲V箷r(shí),用戶(hù)單擊“暫?!卑粹o,播放器將進(jìn)行暫停狀態(tài);播放器正在播放或暫停時(shí),用戶(hù)單擊“停止”按鈕,播放器將停止播放或暫停時(shí),用戶(hù)點(diǎn)擊“上一首”或者“下一首”按鈕,播放器將播放上一首或下一首歌曲。 2.1.2 功能需求分析 從時(shí)序圖中可以看出播放器中信息發(fā)送和調(diào)用過(guò)程 主界面 點(diǎn)擊進(jìn)入按鈕 播放列表 后臺(tái)service 播放界面

5、 選擇歌曲播放 播放 service 播進(jìn)入放列表 播放頁(yè)面 發(fā)送參數(shù),調(diào)用后臺(tái)service 播放,返回播放 2.1.3 系統(tǒng)結(jié)構(gòu)圖和流程圖 主界面 進(jìn)入播放頁(yè)面 播放列表 是否點(diǎn)擊要播放的歌曲 音樂(lè)播放 結(jié)束 2.1.4 系統(tǒng)界面需求 播放器界面要求布局合理,簡(jiǎn)約,顏色舒適,控制按鈕友好,能讓用戶(hù)一眼就能看出各個(gè)按鈕的作用及操作方法。能實(shí)現(xiàn)要求的功能,但又不重復(fù)。要考慮到不同手機(jī)屏幕大小可能不一樣,應(yīng)盡量兼容大多數(shù)手機(jī)屏幕尺寸,使之顯示

6、無(wú)障礙。 第3章 詳細(xì)設(shè)計(jì) 3.1 界面設(shè)計(jì) 3.1.1 播放器的進(jìn)入界面 Android的每一個(gè)可視化界面,為了使界面更加美觀,在此處運(yùn)用了老電視關(guān)閉動(dòng)畫(huà)效果,使其產(chǎn)生動(dòng)畫(huà)效果,界面更加友好,代碼如下: public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Intent intent = new Intent(LocalPlayMusicActivity.this, LocalTabMusicActivity.cla

7、ss); startActivity(intent); finish(); } return true; } // 播放音樂(lè) protected void play() { flag = PLAY; playbtn.setImageResource(R.drawable.pause_button); Intent intent = new Intent(); intent.setAction("org.music.service.LocalMusicService"); intent.putExtra("op"

8、, PLAY); startService(intent); } // 暫停 protected void pause() { flag = PAUSE; playbtn.setImageResource(R.drawable.play_button); Intent intent = new Intent(); intent.setAction("org.music.service.LocalMusicService"); intent.putExtra("op", PAUSE); startService(intent);

9、 } // 上一首 protected void latestOne() { if (position == 0) { position = _ids.length - 1; } else if (position > 0) { position--; } stop(); setup(); play(); } // 停止播放音樂(lè) private void stop() { Intent intent = new Intent(); intent.setAction("org.music.servi

10、ce.LocalMusicService"); intent.putExtra("op", STOP); startService(intent); } // 下一首播放音樂(lè) protected void nextOne() { if (position == _ids.length - 1) { position = 0; } else if (position < _ids.length - 1) { position++; } stop(); setup(); play(); } // 進(jìn)度條改變 p

11、rotected void seekbar_change(int progress) { Intent intent = new Intent(); intent.setAction("org.music.service.LocalMusicService"); intent.putExtra("op", PROGRESS_CHANGE); intent.putExtra("progress", progress); startService(intent); } 3.1.2 播放器主界面 Android的每一個(gè)可視化界面,都有其唯一的布局配置文件

12、,該文件里面有各種布局方式,和各種資源文件。如:圖像,文字,顏色的引用,程序在運(yùn)行時(shí),可以通過(guò)代碼對(duì)各配置文件進(jìn)行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個(gè)Activity,Android工程在每次個(gè)activity啟動(dòng)的時(shí)候會(huì)首先執(zhí)行Oncreate()方法,如下代碼: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

13、setContentView(R.layout.music_play); 該方法執(zhí)行界面初始化操作,該方法主要執(zhí)行界面的初始化操作,Activity有個(gè)設(shè)置布局的方法:Context.setContentView(layoutResID),參數(shù)為資源ID,該Id在工程目錄res/layout下,主界面布局文件名為MusicPlay。 下面是music_play.xml布局文件代碼結(jié)構(gòu)如下:

14、ameLayout> 在相對(duì)布局下嵌套了兩個(gè)相對(duì)布局,第一個(gè)實(shí)現(xiàn)歌曲基本信息的顯示,其中用來(lái)顯示專(zhuān)輯圖片,用來(lái)顯示播放歌曲時(shí)的進(jìn)度條,另一個(gè)

15、用來(lái)顯示上一曲,開(kāi)始/暫停,下一曲等按鈕。 3.2 功能實(shí)現(xiàn) 3.2.1 播放器音軌的實(shí)現(xiàn) 不管是從界面外觀還是從功能上,系統(tǒng)自帶的SeekBar往往不能滿(mǎn)足用戶(hù)的需要。所以我們?cè)谶@里自定義了一個(gè)音軌SeekBar, 在MusicPlay.xml配置文件中,SeekBar的代碼如下:

16、android:layout_gravity="center" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:layout_marginTop="60dip" android:paddingLeft="5dip" android:paddingRight="5dip" android:progressDrawable="@drawable/progressbar_first"

17、 android:thumb="@drawable/progress_dot" /> 上述代碼中有參數(shù)android:thumb="@drawable/progress_dot"為音軌游標(biāo)的圖片資源,android:progressDrawable="@drawable/seekbar_style"為SeekBar條的風(fēng)格style。引用了drawable中的seekbar_style.xml文件,seekBar.xml是自定義的配置文件,代碼如下:

18、d=" 音軌對(duì)象SeekBar在歌曲剛開(kāi)始的時(shí)候調(diào)用方法SeekBar.setMax(), seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onStopTrackingTouch(SeekBar seekBar) {

19、 } public void onStartTrackingTouch(SeekBar seekBar) { } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (MusicService.mplayer != null) { if (fromUser) { MusicService.mplayer.seekTo(progress); } play_time.setText(mAd

20、apter.toTime(progress)); } else { seekBar.setMax(0); } } }); 3.2.2 播放器播放、暫停等功能 各按鈕水平放置,用的是布局中的線性布局LinearLayout,LinearLayout中依次放置上一曲、開(kāi)始/暫停、下一曲、聲音按鈕屬性。配置文件代碼結(jié)構(gòu)如下:

21、mageButton> android的媒體播放原理:android源程序已經(jīng)為我們們封裝好了一個(gè)接口類(lèi),叫MusicService。該接口在執(zhí)行行需要一個(gè)數(shù)據(jù)源,在此初始化對(duì)象: /** * 初始化媒體對(duì)象 * * @param mp3Path */ public void initMediaSource(String mp3Path) { Uri mp3Uri = Uri.parse(mp3Path); if (mplayer != null) { mplayer.stop

22、(); mplayer.reset(); mplayer = null; } mplayer = MediaPlayer.create(this, mp3Uri); mplayer.setOnCompletionListener(this); mLrcRead=new MusicLrc(); } 進(jìn)行播放和暫停功能的設(shè)置,在音樂(lè)播放的過(guò)程中才可以對(duì)播放器進(jìn)行暫停的操作代碼如下: protected void play() { flag = PLAY; playbtn.setImageResource(R.drawable.pause

23、_button); Intent intent = new Intent(); intent.setAction("org.music.service.LocalMusicService"); intent.putExtra("op", PLAY); startService(intent); } // 暫停 protected void pause() { flag = PAUSE; playbtn.setImageResource(R.drawable.play_button); Intent intent = new Inte

24、nt(); intent.setAction("org.music.service.LocalMusicService"); intent.putExtra("op", PAUSE); startService(intent); } // 停止播放音樂(lè) private void stop() { Intent intent = new Intent(); intent.setAction("org.music.service.LocalMusicService"); intent.putExtra("op", STOP); startS

25、ervice(intent); } 進(jìn)行上一曲和下曲的功能,代碼如下: // 上一首 protected void latestOne() { if (position == 0) { position = _ids.length - 1; } else if (position > 0) { position--; } stop(); setup(); play(); } // 下一首播放音樂(lè) protected void nextOne() { if (position == _ids.leng

26、th - 1) { position = 0; } else if (position < _ids.length - 1) { position++; } stop(); setup(); play(); } 3.2.3 數(shù)據(jù)共享機(jī)制 在使用ContentResoler時(shí),調(diào)用者不能直接調(diào)用ContentResoler的接口函數(shù),而需要而需要使用ContentResoler對(duì)象,通過(guò)URI間接調(diào)用ContentResoler。本軟件中主要用到了ContentResoler中的query()函數(shù),用于查詢(xún)歌曲的信息內(nèi)容,相關(guān)代碼如

27、下: private void ReadSDLrc() { cursor = getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM, MediaS

28、tore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.ALBUM_ID }, "_id=?",// 我們們現(xiàn)在的歌詞就是要String數(shù)組的第4個(gè)參數(shù),顯示文件名字 new String[] { _ids[position] + "" }, null); cursor.moveToFirst();// 將游標(biāo)移至第一位 Bitmap bm = getArtwork(this, cursor.getInt(3), cursor.getInt(cursor .getColumnIndex(Media

29、Store.Audio.Media.ALBUM_ID)), true);//顯示專(zhuān)輯圖片,用Bitmap讀出 albumpic.setImageBitmap(bm); String name = cursor.getString(4);// 游標(biāo)定位到DISPLAY_NAME read("/sdcard/" + name.substring(0, name.indexOf(".")) + ".lrc");// sd卡的音樂(lè)名字截取字符竄并找到它的位置,這步重要,沒(méi)有寫(xiě)一直表示歌詞文件無(wú)法顯示 System.out.println(cursor.getString(4))

30、;// 調(diào)試時(shí)我們先把音樂(lè)名字寫(xiě)死,在控制臺(tái)打印能顯示出音樂(lè)名字,那么由于判斷音樂(lè)名字沒(méi)問(wèn)題.只是沒(méi)有獲取位置 } // 初始化服務(wù) private void init() { IntentFilter filter = new IntentFilter(); filter.addAction(MUSIC_CURRENT); filter.addAction(MUSIC_DURATION); filter.addAction(MUSIC_NEXT); filter.addAction(MUSIC_UPDATE); registerRece

31、iver(musicreceiver, filter); } // 截取標(biāo)題,歌詞,歌名 private void loadclip() { seekbar.setProgress(0); int pos = _ids[position]; name.setText(_titles[position]); artist.setText(_artists[position]); Intent intent = new Intent(); intent.putExtra("_id", pos); intent.putExtra("_ti

32、tles", _titles); intent.putExtra("position", position); intent.setAction("org.music.service.LocalMusicService"); startService(intent); } 第4章 總結(jié) 通過(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è)播放器大體由播放主界面、播放列表核心組成,只要掌握了這兩部分的開(kāi)發(fā),音樂(lè)

33、播放器就能初具規(guī)模。而其它的功能都是在這兩個(gè)功能的基礎(chǔ)上去補(bǔ)充添加的,但是這是功能的確是必不可少的功能,否則就不能算是音樂(lè)播放器了。 音樂(lè)播放器系統(tǒng)實(shí)現(xiàn)了播放器的基本功能:播放,暫停、上/下一首、音量調(diào)節(jié)功能。運(yùn)用的系統(tǒng)平臺(tái)是現(xiàn)今最熱門(mén)的Android系統(tǒng),是一個(gè)開(kāi)源的基于Linux系統(tǒng)的手機(jī)平臺(tái)。是以Java語(yǔ)言編寫(xiě)+ContentProvider共享數(shù)據(jù)的組合方式進(jìn)行數(shù)據(jù)管理。實(shí)現(xiàn)了音樂(lè)播放器的系統(tǒng)編程。 經(jīng)過(guò)這些天的Android系統(tǒng)技術(shù)知識(shí)的學(xué)習(xí)和對(duì)音樂(lè)播放器的構(gòu)思與設(shè)計(jì),使我們對(duì)Android系統(tǒng)有了一定的了解,讓我們對(duì)Android系統(tǒng)上的開(kāi)發(fā)流程和開(kāi)發(fā)模式有了深入的了解,這對(duì)我們以后的Android項(xiàng)目開(kāi)發(fā)有很大的幫助。 第 15 頁(yè) 共 18 頁(yè)

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!