《安卓音乐播放器.doc》由会员分享,可在线阅读,更多相关《安卓音乐播放器.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、物联网移动应用开发课 程 设 计题 目 音乐播放器设计班 级 物联网1303学 号 姓 名 牟俊强指导老师 X永利2016年 6月 25日1.项目需求当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windows mobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。Android:
2、是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于Android平台的。现今社会生活紧X,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,播放列等基本播放控制功能,界面简明,操作简单。 本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵
3、活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点。1.1开发环境2.系统需求分析2.1 功能需求(用例图分析)根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述:用例图假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下图2.1 播放器基本用例图用例
4、分析用例名称:启动软件参与者:用户目标:使得用户启动软件并加载手机和sd卡上的音频文件到播放列表前置条件:无基本事件流:1.用户启动软件 2.播放器将播放列表中的当前的歌曲用例名称:播放参与者:用户目标:使得用户可以播放在播放列表中选中的歌曲前置条件:播放器正在运行基本事件流:1.用户单击“播放”按钮 2.播放器将播放列表中的当前的歌曲用例名称:暂停参与者:用户目标:使得用户可以暂停正在播放的歌曲前置条件:歌曲正在播放且未停止和暂停基本事件流:1.用户单击“暂停”按钮 2.播放器将暂停当前的歌曲用例名称:停止参与者:用户目标:使得用户可以停止正在播放的歌曲前置条件:歌曲正在播放或暂停基本事件流
5、:1.用户单击“停止”按钮 2.播放器将停止当前播放的歌曲用例名称:退出参与者:用户目标:使得用户退出或者后台播放音乐前置条件:程序在运行基本事件流:1.用户按返回键 2.播放器退出或者进入后台播放3.概要设计3.1软件播放流程图Step1.启动软件后,软件自动检索手机和sd卡的音频文件,并组织显示成列表.Step2.点击列表的歌曲名字。Step3.播放音乐。Step4.点击暂停,音乐暂停Step5.点击播放 转到step3Step6.点击停止 停止播放音乐Step7.点击退出。 启动软件自动检索手机中的音乐文件,并显示 选择歌曲,点击播放暂停/退出软件图3.1音乐播放器流程图4.界面展示4.
6、1软件部署系统编译生成apk文件,将apk文件拷到手机或者sd卡中,直接打开即可安装。4.2启动软件打开软件后的界面4.3 歌曲列表界面歌曲列表界面4.4 播放界面5.部分源代码以下给出功能实现代码,布局,风格等代码量过大,放在压缩文件中文件夹显示文件如图所示播放器页面布局Main.xml代码如下MainActivity.Java代码如下public class MainActivity extends ListActivity private ImageButton mFrontImageButton = null;private ImageButton mStopImageButton =
7、 null;private ImageButton mStartImageButton = null;private ImageButton mPauseImageButton = null;private ImageButton mNextImageButton = null;/*定义进度handler,显示百分比进度*/Handler mPercentHandler = new Handler();private SeekBar mSeekBar=null;private TextView curProgressText=null;private TextView curtimeAndTo
8、taltime=null;public MediaPlayer mMediaPlayer;private List mMusicList = new ArrayList();private int currentListItem = 0;private static final String MUSIC_PATH = new String(/sdcard/);Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); musicList(); mMediaPlayer
9、= new MediaPlayer(); initmFrontMusic(); initStopMusic(); initStartMusic(); initPauseMusic(); initNextMusic(); initSeekBar(); public void initmFrontMusic()mFrontImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) if(-currentListItem = 0) currentListItem = mMusicList.siz
10、e(); else playMusic(MUSIC_PATH + mMusicList.get(currentListItem); );public void initStopMusic()mStopImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) if(mMediaPlayer.isPlaying()mMediaPlayer.reset(););public void initStartMusic()mStartImageButton.setOnClickListener(ne
11、w OnClickListener()public void onClick(View arg0) playMusic(MUSIC_PATH + mMusicList.get(currentListItem);startSeekBarUpdate(););public void initPauseMusic()mPauseImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) if(mMediaPlayer.isPlaying()mMediaPlayer.pause();elsemMe
12、diaPlayer.start(););public void initNextMusic()mNextImageButton.setOnClickListener(new OnClickListener()public void onClick(View arg0) nextMusic(););public void initSeekBar()/*初始化拖动条和当前进度显示值*/mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() public void onProgressChanged(SeekBar seek
13、Bar, int progress,boolean fromUser) /* 如果拖动进度发生改变,则显示当前进度值 */curProgressText.setText(当前进度: + progress);public void onStartTrackingTouch(SeekBar arg0) curProgressText.setText(拖动中.);public void onStopTrackingTouch(SeekBar arg0) int dest = mSeekBar.getProgress(); int mMax = mMediaPlayer.getDuration();i
14、nt sMax = mSeekBar.getMax();mMediaPlayer.seekTo(mMax*dest/sMax););private void playMusic(String path)try mMediaPlayer.reset();mMediaPlayer.setDataSource(path);mMediaPlayer.prepare();mMediaPlayer.start();mMediaPlayer.setOnpletionListener(new OnpletionListener()public void onpletion(MediaPlayer arg0)
15、nextMusic();); catch (IOException 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) mMe
16、diaPlayer.stop(); mMediaPlayer.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 mus
17、icList()File home = new File(MUSIC_PATH);if(home.listFiles(new MusicFilter().length 0)for(File file : home.listFiles(new MusicFilter()mMusicList.add(file.getName();setListAdapter(musicList);/*更新拖动条进度*/public void startSeekBarUpdate() mPercentHandler.post(start);Runnable start = new Runnable() public
18、 void run() / 用一个handler更新SeekBarmPercentHandler.post(updatesb);Runnable updatesb =new Runnable()public void run() int position = mMediaPlayer.getCurrentPosition();int mMax = mMediaPlayer.getDuration();int sMax = mSeekBar.getMax();mSeekBar.setProgress(position * sMax / mMax);curtimeAndTotaltime.setT
19、ext(当前播放时间: + position / 1000 + 秒+ n歌曲总时间: + mMax / 1000 + 秒);/ 每秒钟更新一次mPercentHandler.postDelayed(updatesb, 1000);/过滤文件类型class MusicFilter implements FilenameFilterpublic boolean accept(File dir, String name) /这里还可以设置其他格式的音乐文件return (name.endsWith(.mp3);6.结论心得 (1)通过本次开发解决了诸如SD卡音乐文件搜索并显示、联网搜索歌曲等难题,对
20、安卓的开发有了更深入的认识。(2) 通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成。(3) 本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是Eclips4.0+Java语言的支持,Android Development Tool的插件,和Android SDK2.1版本的全面结合,才使整个音乐播放器系统得以实现。课程设计教师评语及成绩 指导教师: 日期: 2016年 月 日 课程设计评价20 / 20