




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、物聯(lián)網(wǎng)移動應用開發(fā) 課 程 設 計題 目 音樂播放器設計 班 級 物聯(lián)網(wǎng)1303 學 號 姓 名 牟俊強 指導老師 劉永利 2016年 6月 25日1.項目需求當今社會的生活節(jié)奏越來越快,人們對手機的要求也越來越高,由于手機市場發(fā)展迅速,使得手機操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場上主要有三個手機操作系統(tǒng),Windows mobile,symbian,以及谷歌的Android操作系統(tǒng),其中占有開放源代碼優(yōu)勢的Android系統(tǒng)有最大的發(fā)展前景。那么能否在手機上擁有自己編寫的個性音樂播放器呢?能的,谷歌Android系統(tǒng)就能做到。本文的音樂播放器就是基于谷歌Android手機平臺的播放器。And
2、roid:是谷歌于2007年公布的開放式源代碼手機系統(tǒng),它的開放性就優(yōu)于其它封閉式的手機系統(tǒng),因此,任何人都可能根據(jù)自己的喜好將手機系統(tǒng)中的所有功能重新編寫。這使得越來越多的人關注這個操作系統(tǒng)。本次作品音樂播放器就是基于Android平臺的。現(xiàn)今社會生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一,本項目的目的是開發(fā)一個可以播放主流音樂文件格式的播放器,本設計實現(xiàn)的主要功能是播放Mp3,Wav多種格式的音樂文件,并且能夠控制播放,暫停,停止,播放列等基本播放控制功能,界面簡明,操作簡單。 本項目是一款基于Android手機平臺的音樂播放器,使Android手機擁有個性的多媒體播放器,使手機顯
3、得更生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設計者更加熟練Android的技術和其它在市場上的特點。1.1開發(fā)環(huán)境2.系統(tǒng)需求分析2.1 功能需求(用例圖分析)根據(jù)項目的目標,我們可獲得項目系統(tǒng)的基本需求,以下從不同角度來描述系統(tǒng)的需求,并且使用用例圖來描述,系統(tǒng)的功能需求,我們分成四部分來概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器擴展卡需求。以下分別描述:2.1.1 播放器的用例圖假設安裝了音樂播放器的用戶是系統(tǒng)的主要設計對象,其擁有以下操作,啟動軟件、播放音樂、暫停播放、停止播放、退出軟件,其用例圖如下
4、圖2.1 播放器基本用例圖用例分析用例名稱:啟動軟件參與者:用戶目標:使得用戶啟動軟件并加載手機和sd卡上的音頻文件到播放列表前置條件:無基本事件流:1.用戶啟動軟件 2.播放器將播放列表中的當前的歌曲用例名稱:播放參與者:用戶目標:使得用戶可以播放在播放列表中選中的歌曲前置條件:播放器正在運行基本事件流:1.用戶單擊“播放”按鈕 2.播放器將播放列表中的當前的歌曲用例名稱:暫停參與者:用戶目標:使得用戶可以暫停正在播放的歌曲前置條件:歌曲正在播放且未停止和暫停基本事件流:1.用戶單擊“暫?!卑粹o 2.播放器將暫停當前的歌曲用例名稱:停止參與者:用戶目標:使得用戶可以停止正在播放的歌曲前置條件
5、:歌曲正在播放或暫?;臼录鳎?.用戶單擊“停止”按鈕 2.播放器將停止當前播放的歌曲用例名稱:退出參與者:用戶目標:使得用戶退出或者后臺播放音樂前置條件:程序在運行基本事件流:1.用戶按返回鍵 2.播放器退出或者進入后臺播放3.概要設計3.1軟件播放流程圖Step1.啟動軟件后,軟件自動檢索手機和sd卡的音頻文件,并組織顯示成列表.Step2.點擊列表的歌曲名字。Step3.播放音樂。Step4.點擊暫停,音樂暫停Step5.點擊播放 轉到step3Step6.點擊停止 停止播放音樂Step7.點擊退出。 啟動軟件自動檢索手機中的音樂文件,并顯示 選擇歌曲,點擊播放暫停/退出軟件圖3.1音
6、樂播放器流程圖4.界面展示4.1軟件部署系統(tǒng)編譯生成apk文件,將apk文件拷到手機或者sd卡中,直接打開即可安裝。4.2啟動軟件打開軟件后的界面4.3 歌曲列表界面歌曲列表界面4.4 播放界面5.部分源代碼以下給出功能實現(xiàn)代碼,布局,風格等代碼量過大,放在壓縮文件中文件夾顯示文件如圖所示播放器頁面布局Main.xml代碼如下<LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layo
7、ut_height="fill_parent" android:background="drawable/tupian" > <ListView android:id="+id/android:list" android:layout_width="fill_parent" android:layout_height="200dip" android:layout_weight="1" android:drawSelectorOnTop="false&q
8、uot; /> <SeekBar android:id="+id/SeekBar01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:max="100" android:progress="0" android:secondaryProgress="0" android:visibility="visible" /> <
9、TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="+id/currentProgress" /> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_y="300dp" android:id
10、="+id/curtimeandtotaltime" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageButton android:id="+id/front_button" android:layout_width="wrap_content"
11、; android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:background="drawable/first1" /> <ImageButton android:id="+id/stop_button" android:layout_width="wrap_content" android:layout_height="wrap_content" androi
12、d:background="drawable/stop1" android:layout_marginLeft="10dip" /> <ImageButton android:id="+id/start_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="drawable/start1" android:layout
13、_marginLeft="10dip" /> <ImageButton android:id="+id/pause_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="drawable/pose1" android:layout_marginLeft="10dip" /> <ImageButton and
14、roid:id="+id/next_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="drawable/next1" android:layout_marginLeft="10dip" /> </LinearLayout></LinearLayout>MainActivity.Java代碼如下import java.
15、io.File;import java.io.FilenameFilter;import java.io.IOException;import java.util.ArrayList;import java.util.List;import android.app.ListActivity;import android.graphics.Color;import android.graphics.drawable.GradientDrawable;import android.graphics.drawable.GradientDrawable.Orientation;import andro
16、id.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Bundle;import android.os.Handler;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.ArrayAdapter;import android.widget.ImageButton;import and
17、roid.widget.ListView;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;public class MainActivity extends ListActivity private ImageButton mFrontImageButton = null;private ImageButton mStopImageButton = null;private ImageButton mStartIm
18、ageButton = null;private ImageButton mPauseImageButton = null;private ImageButton mNextImageButton = null;/*定義進度handler,顯示百分比進度*/Handler mPercentHandler = new Handler();private SeekBar mSeekBar=null;private TextView curProgressText=null;private TextView curtimeAndTotaltime=null;public MediaPlayer mM
19、ediaPlayer;private List<String> mMusicList = new ArrayList<String>();private int currentListItem = 0;private static final String MUSIC_PATH = new String("/sdcard/");Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.lay
20、out.main); musicList(); mMediaPlayer = new MediaPlayer(); initmFrontMusic(); initStopMusic(); initStartMusic(); initPauseMusic(); initNextMusic(); initSeekBar(); public void initmFrontMusic()mFrontImageButton = (ImageButton)findViewById(R.id.front_button);mFrontImageButton.setOnClickListener(new OnC
21、lickListener()public void onClick(View arg0) if(-currentListItem >= 0) currentListItem = mMusicList.size(); else playMusic(MUSIC_PATH + mMusicList.get(currentListItem); );public void initStopMusic()mStopImageButton = (ImageButton)findViewById(R.id.stop_button);mStopImageButton.setOnClickListener(
22、new OnClickListener()public void onClick(View arg0) if(mMediaPlayer.isPlaying()mMediaPlayer.reset(););public void initStartMusic()mStartImageButton = (ImageButton)findViewById(R.id.start_button);mStartImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) playMusic(MUSIC_
23、PATH + mMusicList.get(currentListItem);startSeekBarUpdate(););public void initPauseMusic()mPauseImageButton = (ImageButton)findViewById(R.id.pause_button);mPauseImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) if(mMediaPlayer.isPlaying()mMediaPlayer.pause();elsemMed
24、iaPlayer.start(););public void initNextMusic()mNextImageButton = (ImageButton)findViewById(R.id.next_button);mNextImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) nextMusic(););public void initSeekBar()/*初始化拖動條和當前進度顯示值*/ mSeekBar=(SeekBar)findViewById(R.id.SeekBar01
25、); curProgressText=(TextView)findViewById(R.id.currentProgress); curtimeAndTotaltime=(TextView)findViewById(R.id.curtimeandtotaltime); mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) /* 如果拖動進度發(fā)生改變,則顯示當前進度
26、值 */curProgressText.setText("當前進度: " + progress);public void onStartTrackingTouch(SeekBar arg0) curProgressText.setText("拖動中.");public void onStopTrackingTouch(SeekBar arg0) int dest = mSeekBar.getProgress(); int mMax = mMediaPlayer.getDuration();int sMax = mSeekBar.getMax();mMed
27、iaPlayer.seekTo(mMax*dest/sMax););private void playMusic(String path)try mMediaPlayer.reset();mMediaPlayer.setDataSource(path);mMediaPlayer.prepare();mMediaPlayer.start();mMediaPlayer.setOnCompletionListener(new OnCompletionListener()public void onCompletion(MediaPlayer arg0) nextMusic();); catch (I
28、OException e) e.printStackTrace();private void nextMusic()if(+currentListItem >= mMusicList.size()currentListItem = 0;elseplayMusic(MUSIC_PATH + mMusicList.get(currentListItem);Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) if(keyCode = KeyEvent.KEYCODE_BACK) mMediaPlayer.stop(); m
29、MediaPlayer.release(); return super.onKeyDown(keyCode, event);Overrideprotected void onListItemClick(ListView l, View v, int position, long id) currentListItem = position;playMusic(MUSIC_PATH + mMusicList.get(position);super.onListItemClick(l, v, position, id);/播放列表public void musicList()File home =
30、 new File(MUSIC_PATH);if(home.listFiles(new MusicFilter().length > 0)for(File file : home.listFiles(new MusicFilter()mMusicList.add(file.getName();ArrayAdapter<String> musicList = new ArrayAdapter<String>(MainActivity.this,R.layout.musicitem,mMusicList);setListAdapter(musicList);/*更新拖動條進度*/public void startSeekBarUpdate() mPercentHandler.post(start);Runnable start = n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 乒乓球運動用品和器械企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 工具包企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略研究報告
- 勞保手套企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 中藥防治皮膚病復發(fā)針劑行業(yè)深度調研及發(fā)展戰(zhàn)略咨詢報告
- 女性網(wǎng)襪企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略研究報告
- 2025至2030年中國手縫PV足球數(shù)據(jù)監(jiān)測研究報告
- 贊助冠名合同范本
- 2025至2030年中國雙層膜充氣系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 門面合同租用合同范本
- 企業(yè)農行貸款合同范本
- 經典文學作品中的女性形象研究外文文獻翻譯2016年
- 控股集團公司組織架構圖.docx
- 高爐煤氣安全知識的培訓
- 2008 年全國高校俄語專業(yè)四級水平測試試卷
- 需求供給與均衡價格PPT課件
- 最常用2000個英語單詞_(全部標有注釋)字母排序
- 人造革的幾種生產制造方法
- 在銀行大零售業(yè)務工作會議上的講話講解學習
- 古代傳說中的藝術形象-
- 水電站大壩土建安裝工程懸臂模板施工手冊
- 三體系內審檢查表(共58頁).doc
評論
0/150
提交評論