簡易音樂播放器報告
《簡易音樂播放器報告》由會員分享,可在線閱讀,更多相關(guān)《簡易音樂播放器報告(18頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 音樂播放器報告書 項目名稱:簡易音樂播放器 小組編號:E 小組成員:郭元坤、邊東東、 牛孟強、邢棕、王超 目錄 第1章 項目組詳情 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章 詳細設(shè)計 3 3.1 界面設(shè)計 3 3.1.1 播放器的進入界面 3 3.1.2 播放器主界面 6 3.2 功能實現(xiàn) 7 3.2.1 播放器音軌的實現(xiàn) 7 3.2.2 播放器播放、暫停等功能 8 3.2.3 數(shù)據(jù)共享機制 10 第4章 總結(jié) 12 第1章 項目組詳情 E組: 組長:郭元坤 組員:邊東東、牛孟強、邢棕、王超 小組成員分工情況: 組長郭元坤主要研究音樂播放器系統(tǒng)的需求分析兼讀取SD信息中的.mp3文件開發(fā)。而其它功能實現(xiàn)是由邊東東、牛孟強、邢棕、王超來實現(xiàn)的。其各自的負(fù)責(zé)的主
3、要分工如下: 邊東東:音樂播放界面和音樂的播放、暫停、上一曲、下一曲,音軌是由我們和邊東東、牛孟強實現(xiàn)的。 牛孟強:把從SD卡中讀取到的.mp3文件通過列表的方式顯示在主頁上,還有菜單功能的實現(xiàn)。包括退出功能和搜索音樂文件功能 邢棕和王超:主要負(fù)責(zé)音樂播放器系統(tǒng)的“設(shè)置”界面和功能實現(xiàn),包括歌詞圖片的下載和顯示還實現(xiàn)了定時退出的功能。 第2章 系統(tǒng)需求分析 2.1 功能需求 2.1.1 播放器的基本控制需求 根據(jù)項目的目標(biāo),我們們可獲得項目系統(tǒng)的基本需求,一下從不同的角度來描述系統(tǒng)的需求,并且使用用戶用例圖來描述,系統(tǒng)的功能需求,我們們分成兩部分來概括,即播放器的基本控制需要,
4、播放器友好界面需求。 播 放 暫停 停止 上一曲 下一曲 在播放器正在運行時,用戶單擊“播放”按鈕,播放器將播放選中的播放列表中的音樂,并同時顯示當(dāng)前進度;當(dāng)歌曲未暫停或停止時,用戶單擊“暫停”按鈕,播放器將進行暫停狀態(tài);播放器正在播放或暫停時,用戶單擊“停止”按鈕,播放器將停止播放或暫停時,用戶點擊“上一首”或者“下一首”按鈕,播放器將播放上一首或下一首歌曲。 2.1.2 功能需求分析 從時序圖中可以看出播放器中信息發(fā)送和調(diào)用過程 主界面 點擊進入按鈕 播放列表 后臺service 播放界面
5、 選擇歌曲播放 播放 service 播進入放列表 播放頁面 發(fā)送參數(shù),調(diào)用后臺service 播放,返回播放 2.1.3 系統(tǒng)結(jié)構(gòu)圖和流程圖 主界面 進入播放頁面 播放列表 是否點擊要播放的歌曲 音樂播放 結(jié)束 2.1.4 系統(tǒng)界面需求 播放器界面要求布局合理,簡約,顏色舒適,控制按鈕友好,能讓用戶一眼就能看出各個按鈕的作用及操作方法。能實現(xiàn)要求的功能,但又不重復(fù)。要考慮到不同手機屏幕大小可能不一樣,應(yīng)盡量兼容大多數(shù)手機屏幕尺寸,使之顯示
6、無障礙。 第3章 詳細設(shè)計 3.1 界面設(shè)計 3.1.1 播放器的進入界面 Android的每一個可視化界面,為了使界面更加美觀,在此處運用了老電視關(guān)閉動畫效果,使其產(chǎn)生動畫效果,界面更加友好,代碼如下: 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; } // 播放音樂 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(); } // 停止播放音樂 private void stop() { Intent intent = new Intent(); intent.setAction("org.music.servi
10、ce.LocalMusicService"); intent.putExtra("op", STOP); startService(intent); } // 下一首播放音樂 protected void nextOne() { if (position == _ids.length - 1) { position = 0; } else if (position < _ids.length - 1) { position++; } stop(); setup(); play(); } // 進度條改變 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的每一個可視化界面,都有其唯一的布局配置文件
12、,該文件里面有各種布局方式,和各種資源文件。如:圖像,文字,顏色的引用,程序在運行時,可以通過代碼對各配置文件進行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個Activity,Android工程在每次個activity啟動的時候會首先執(zhí)行Oncreate()方法,如下代碼: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
13、setContentView(R.layout.music_play);
該方法執(zhí)行界面初始化操作,該方法主要執(zhí)行界面的初始化操作,Activity有個設(shè)置布局的方法:Context.setContentView(layoutResID),參數(shù)為資源ID,該Id在工程目錄res/layout下,主界面布局文件名為MusicPlay。
下面是music_play.xml布局文件代碼結(jié)構(gòu)如下:
14、ameLayout>
15、用來顯示上一曲,開始/暫停,下一曲等按鈕。
3.2 功能實現(xiàn)
3.2.1 播放器音軌的實現(xiàn)
不管是從界面外觀還是從功能上,系統(tǒng)自帶的SeekBar往往不能滿足用戶的需要。所以我們在這里自定義了一個音軌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="
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中依次放置上一曲、開始/暫停、下一曲、聲音按鈕屬性。配置文件代碼結(jié)構(gòu)如下:
21、mageButton>
22、();
mplayer.reset();
mplayer = null;
}
mplayer = MediaPlayer.create(this, mp3Uri);
mplayer.setOnCompletionListener(this);
mLrcRead=new MusicLrc();
}
進行播放和暫停功能的設(shè)置,在音樂播放的過程中才可以對播放器進行暫停的操作代碼如下:
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);
}
// 停止播放音樂
private void stop() {
Intent intent = new Intent();
intent.setAction("org.music.service.LocalMusicService");
intent.putExtra("op", STOP);
startS 25、ervice(intent);
}
進行上一曲和下曲的功能,代碼如下:
// 上一首
protected void latestOne() {
if (position == 0) {
position = _ids.length - 1;
} else if (position > 0) {
position--;
}
stop();
setup();
play();
}
// 下一首播放音樂
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ù)共享機制
在使用ContentResoler時,調(diào)用者不能直接調(diào)用ContentResoler的接口函數(shù),而需要而需要使用ContentResoler對象,通過URI間接調(diào)用ContentResoler。本軟件中主要用到了ContentResoler中的query()函數(shù),用于查詢歌曲的信息內(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個參數(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);//顯示專輯圖片,用Bitmap讀出
albumpic.setImageBitmap(bm);
String name = cursor.getString(4);// 游標(biāo)定位到DISPLAY_NAME
read("/sdcard/" + name.substring(0, name.indexOf(".")) + ".lrc");// sd卡的音樂名字截取字符竄并找到它的位置,這步重要,沒有寫一直表示歌詞文件無法顯示
System.out.println(cursor.getString(4)) 30、;// 調(diào)試時我們先把音樂名字寫死,在控制臺打印能顯示出音樂名字,那么由于判斷音樂名字沒問題.只是沒有獲取位置
}
// 初始化服務(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é)
通過對Android手機平臺的音樂播放器軟件的開發(fā),使我們對Android音樂播放器系統(tǒng)的整體設(shè)計有一個深入的了解,對整個流程也會有一個清晰的認(rèn)識。開發(fā)Android音樂播放器,要抓住開發(fā)的核心部分,音樂播放器大體由播放主界面、播放列表核心組成,只要掌握了這兩部分的開發(fā),音樂 33、播放器就能初具規(guī)模。而其它的功能都是在這兩個功能的基礎(chǔ)上去補充添加的,但是這是功能的確是必不可少的功能,否則就不能算是音樂播放器了。
音樂播放器系統(tǒng)實現(xiàn)了播放器的基本功能:播放,暫停、上/下一首、音量調(diào)節(jié)功能。運用的系統(tǒng)平臺是現(xiàn)今最熱門的Android系統(tǒng),是一個開源的基于Linux系統(tǒng)的手機平臺。是以Java語言編寫+ContentProvider共享數(shù)據(jù)的組合方式進行數(shù)據(jù)管理。實現(xiàn)了音樂播放器的系統(tǒng)編程。
經(jīng)過這些天的Android系統(tǒng)技術(shù)知識的學(xué)習(xí)和對音樂播放器的構(gòu)思與設(shè)計,使我們對Android系統(tǒng)有了一定的了解,讓我們對Android系統(tǒng)上的開發(fā)流程和開發(fā)模式有了深入的了解,這對我們以后的Android項目開發(fā)有很大的幫助。
第 15 頁 共 18 頁
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 110中國人民警察節(jié)(筑牢忠誠警魂感受別樣警彩)
- 2025正字當(dāng)頭廉字入心爭當(dāng)公安隊伍鐵軍
- XX國企干部警示教育片觀后感筑牢信仰之基堅守廉潔底線
- 2025做擔(dān)當(dāng)時代大任的中國青年P(guān)PT青年思想教育微黨課
- 2025新年工作部署會圍繞六個干字提要求
- XX地區(qū)中小學(xué)期末考試經(jīng)驗總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 支部書記上黨課筑牢清廉信念為高質(zhì)量發(fā)展?fàn)I造風(fēng)清氣正的環(huán)境
- 冬季消防安全知識培訓(xùn)冬季用電防火安全
- 2025加強政治引領(lǐng)(政治引領(lǐng)是現(xiàn)代政黨的重要功能)
- 主播直播培訓(xùn)直播技巧與方法
- 2025六廉六進持續(xù)涵養(yǎng)良好政治生態(tài)
- 員工職業(yè)生涯規(guī)劃方案制定個人職業(yè)生涯規(guī)劃
- 2024年XX地區(qū)黨建引領(lǐng)鄉(xiāng)村振興工作總結(jié)
- XX中小學(xué)期末考試經(jīng)驗總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 幼兒園期末家長會長長的路慢慢地走