




已閱讀5頁(yè),還剩13頁(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)介
音樂(lè)播放器報(bào)告書(shū) 項(xiàng)目名稱:簡(jiǎn)易音樂(lè)播放器 小組編號(hào):E 小組成員:郭元坤、邊東東、 牛孟強(qiáng)、邢棕、王超 目錄第1章 項(xiàng)目組詳情1第2章 系統(tǒng)需求分析12.1 功能需求12.1.1 播放器的基本控制需求12.1.2 功能需求分析22.2 系統(tǒng)結(jié)構(gòu)圖和流程圖22.3 系統(tǒng)界面需求3第3章 詳細(xì)設(shè)計(jì)33.1 界面設(shè)計(jì)33.1.1 播放器的進(jìn)入界面33.1.2 播放器主界面63.2 功能實(shí)現(xiàn)73.2.1 播放器音軌的實(shí)現(xiàn)73.2.2 播放器播放、暫停等功能83.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é)的主要分工如下:邊東東:音樂(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)的需求,并且使用用戶用例圖來(lái)描述,系統(tǒng)的功能需求,我們們分成兩部分來(lái)概括,即播放器的基本控制需要,播放器友好界面需求。播 放暫停停止上一曲下一曲在播放器正在運(yùn)行時(shí),用戶單擊“播放”按鈕,播放器將播放選中的播放列表中的音樂(lè),并同時(shí)顯示當(dāng)前進(jìn)度;當(dāng)歌曲未暫停或停止時(shí),用戶單擊“暫?!卑粹o,播放器將進(jìn)行暫停狀態(tài);播放器正在播放或暫停時(shí),用戶單擊“停止”按鈕,播放器將停止播放或暫停時(shí),用戶點(diǎn)擊“上一首”或者“下一首”按鈕,播放器將播放上一首或下一首歌曲。2.1.2 功能需求分析從時(shí)序圖中可以看出播放器中信息發(fā)送和調(diào)用過(guò)程主界面點(diǎn)擊進(jìn)入按鈕播放列表后臺(tái)service播放界面選擇歌曲播放播放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)約,顏色舒適,控制按鈕友好,能讓用戶一眼就能看出各個(gè)按鈕的作用及操作方法。能實(shí)現(xiàn)要求的功能,但又不重復(fù)。要考慮到不同手機(jī)屏幕大小可能不一樣,應(yīng)盡量兼容大多數(shù)手機(jī)屏幕尺寸,使之顯示無(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.class);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, 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);/ 上一首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.service.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)度條改變protected 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è)可視化界面,都有其唯一的布局配置文件,該文件里面有各種布局方式,和各種資源文件。如:圖像,文字,顏色的引用,程序在運(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);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)如下: 在相對(duì)布局下嵌套了兩個(gè)相對(duì)布局,第一個(gè)實(shí)現(xiàn)歌曲基本信息的顯示,其中用來(lái)顯示專輯圖片,用來(lái)顯示播放歌曲時(shí)的進(jìn)度條,另一個(gè)則用來(lái)顯示上一曲,開(kāi)始/暫停,下一曲等按鈕。3.2 功能實(shí)現(xiàn)3.2.1 播放器音軌的實(shí)現(xiàn)不管是從界面外觀還是從功能上,系統(tǒng)自帶的SeekBar往往不能滿足用戶的需要。所以我們?cè)谶@里自定義了一個(gè)音軌SeekBar,在MusicPlay.xml配置文件中,SeekBar的代碼如下:上述代碼中有參數(shù)android:thumb=drawable/progress_dot為音軌游標(biāo)的圖片資源,android:progressDrawable=drawable/seekbar_style為SeekBar條的風(fēng)格style。引用了drawable中的seekbar_style.xml文件,seekBar.xml是自定義的配置文件,代碼如下:音軌對(duì)象SeekBar在歌曲剛開(kāi)始的時(shí)候調(diào)用方法SeekBar.setMax(),seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() public void onStopTrackingTouch(SeekBar seekBar) 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(mAdapter.toTime(progress); else seekBar.setMax(0););3.2.2 播放器播放、暫停等功能各按鈕水平放置,用的是布局中的線性布局LinearLayout,LinearLayout中依次放置上一曲、開(kāi)始/暫停、下一曲、聲音按鈕屬性。配置文件代碼結(jié)構(gòu)如下:android的媒體播放原理:android源程序已經(jīng)為我們們封裝好了一個(gè)接口類,叫MusicService。該接口在執(zhí)行行需要一個(gè)數(shù)據(jù)源,在此初始化對(duì)象:/* * 初始化媒體對(duì)象 * * param mp3Path */public void initMediaSource(String mp3Path) Uri mp3Uri = Uri.parse(mp3Path);if (mplayer != null) mplayer.stop();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_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 Intent();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);startService(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.length - 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ù),用于查詢歌曲的信息內(nèi)容,相關(guān)代碼如下: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,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Audio.Media.ALBUM_ID , _id=?,/ 我們們現(xiàn)在的歌詞就是要String數(shù)組的第4個(gè)參數(shù),顯示文件名字new String _idsposition + , null);cursor.moveToFirst();/ 將游標(biāo)移至第一位Bitmap bm = getArtwork(this, cursor.getInt(3), cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID), true);/顯示專輯圖片,用Bitmap讀出albumpic.setImageBitmap(bm);String name = cursor.getString(4);/ 游標(biāo)定位到DISPLAY_NAMEread(/sdcard/ + name.substring(0, name.indexOf(.) + .lrc);/ sd卡的音樂(lè)名字截取字符竄并找到它的位置,這步重要,沒(méi)有寫(xiě)一直表示歌詞文件無(wú)法顯示System.out.println(cursor.getString(4);/ 調(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);registerReceiver(musicreceiver, filter);/ 截取標(biāo)題,歌詞,歌名private void loadclip() seekbar.setProgress(0);int pos = _idsposition;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 市政工程技術(shù)培訓(xùn)試題及答案
- 2025年建筑工程考試典型試題及答案
- 工程質(zhì)量驗(yàn)收試題及答案
- 2025年中級(jí)經(jīng)濟(jì)師考試的備考?xì)v程分享與試題及答案
- 分布式能源交易市場(chǎng)2025年技術(shù)創(chuàng)新與產(chǎn)業(yè)升級(jí)分析報(bào)告
- 行政管理心理學(xué)實(shí)際應(yīng)用試題及答案
- 基于2025年電商平臺(tái)數(shù)據(jù)分析的社交電商發(fā)展報(bào)告
- 2025年工業(yè)廢氣深度凈化技術(shù)在環(huán)保產(chǎn)業(yè)技術(shù)創(chuàng)新與產(chǎn)業(yè)協(xié)同效應(yīng)報(bào)告
- 2025年工程經(jīng)濟(jì)理論框架試題及答案
- 2024年水利水電工程知識(shí)總結(jié)與分享試題及答案
- 膠粘劑制造業(yè)行業(yè)營(yíng)銷方案
- 【課件】《“敬畏生命珍愛(ài)生命”》主題班會(huì)課件
- 【江淮汽車公司財(cái)務(wù)現(xiàn)狀及其盈利能力問(wèn)題分析(10000字論文)】
- 每日安全檢查表
- 學(xué)會(huì)寬容快樂(lè)生活主題班會(huì)課件
- 畢業(yè)生就業(yè)意向調(diào)查表
- 《食品安全事故處置方案》
- 國(guó)家電網(wǎng)招聘之其他工學(xué)類復(fù)習(xí)提高資料打印
- 嬰兒撫觸與嬰兒操-嬰兒撫觸的手法(嬰幼兒撫觸與按摩課件)
- 學(xué)校食堂病媒生物防治管理制度范本(通用8篇)
- PID傳感器CF值異丁烯標(biāo)定
評(píng)論
0/150
提交評(píng)論