android实验报告模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
移动应用开发实验报告
实验名称音乐播放器
班级
学号
姓名
指导教师
实验成绩
2016 年04月
一、实验目的
本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点。
二、实验内容及要求
在其中写清楚这个实验具体要你做什么,怎么做,要达到什么样的效果等。
本设计实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,,下一首,上一首播放列等基本播放控制功能,界面简明,操作简单。三、实验方案设计
在其中写清楚你的程序的详细设计,用流程图配文字的形式描述。
如果其中涉及到算法,一定要把算法阐述清楚。
3.1.1假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下
图2.1 播放器基本用例图
3.1.2用例分析
①用例名称:启动软件参与者:用户目标:使得用户启动软件并加载手机和sd 卡上的音频文件到播放列表前置条件:无基本事件流:1.用户启动软件
2.播放器将播放列表中的当前的歌曲
②用例名称:播放参与者:用户目标:使得用户可以播放在播放列表中选中的歌曲前置条件:播放器正在运行基本事件流:1.用户单击“播放”按钮 2.播放器将播放列表中的当前的歌曲
③用例名称:暂停参与者:用户目标:使得用户可以暂停正在播放的歌曲前置条件:歌曲正在播放且未停止和暂停基本事件流:1.用户单击“暂停”按钮
2.播放器将暂停当前的歌曲
④用例名称:停止参与者:用户目标:使得用户可以停止正在播放的歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户单击“停止”按钮
2.播放器将停止当前播放的歌曲
⑤用例名称:推出参与者:用户目标:使得用户退出或者后台播放音乐前置条件:程序在运行
基本事件流:1.用户按返回键 2.播放器退出或者进入后台播放
四、实验测试
Step1.启动软件后,软件自动检索手机和sd卡的音频文件,并组织显示成列表.
Step2.点击列表的歌曲名字。
Step3.播放音乐。
Step4.点击暂停,音乐暂停
Step5.点击播放转到step3
Step6.点击停止停止播放音乐
Step7.点击退出,若音乐处于播放状态,则音乐转向后台播放,界面退出。
Step8.点击退户,若音乐处于暂停或者停止状态,直接退出。
音乐播放器流程图
4.1MusicInfoController类这个类继承于service,是播放音乐的服务类。播放音乐,暂停音乐,停止播放等操作都封装在这个类中。主要的执行动作有:
4.1.1.类启动onCreate(){ mMediaPlayer = new MediaPlayer();//分配一个播放对象mMediaPlayer.setOnPreparedListener(mPrepareListener);//绑定之前
mMediaPlayer.setOnCompletionListener(mCompleteListener);//绑定之后}
4.1.2.服务绑定activity MediaPlayer.OnCompletionListener mCompleteListener = new MediaPlayer.OnCompletionListener() //实例化一个绑定监听器的匿名类{ public void onCompletion(MediaPlayer mp) //完成绑定后
{ broadcastEvent(PLAY_COMPLETED);//广播消息} };
4.2MusicInfoController类这个类主要用于获取android系统中的音频文件,并提供访问接口,它是一个单例类。
4.2.1获得播放文件列表private Cursor query(Uri uri, String[] prjs, String selections, String[] selectArgs, String order){ ContentResolver resolver = pApp.getContentResolver();//取得一个连接对象
if (resolver == null){ return null; } return resolver.query(uri, prjs, selections, selectArgs, order); } public Cursor getAllSongs(){ return
query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);//查询ContentResolver 的所有音频文件}
4.3MusicList类改类继承于ListActivity,主要用于显示歌曲列表,并且封装部分操作,以及与父级目标通信。
4.3.1播放protected void onListItemClick(ListView l, View v, int position, long id) { //歌曲列表的某项被点击super.onListItemClick(l, v, position, id); if (mCursor == null
||mCursor.getCount() == 0) { return; }
mCursor.moveToPosition(position);//游标移动到当前路径String url =
mCursor.getString(mCursor .getColumnIndexOrThrow(MediaStore.Audi o.Media.DA TA));//取得绝对路径mMusicPlayerService.setDataSource(url);//传递绝对路径mMusicPlayerService.start();//播放音乐}
4.3.2暂停/播放mPlayPauseButton.setOnClickListener(new Button.OnClickListener()
{ public void onClick(View v) { if (mMusicPlayerService != null && mMusicPlayerService.isPlaying()) { mMusicPlayerService.pause();//音乐播放的
服务暂停mPlayPauseButton.setText(R.string.play);//改变按钮文字} else if (mMusicPlayerService != null){ mMusicPlayerService.start();//如果已经是暂停,则播放音乐mPlayPauseButton.setText(R.string.pause);//改变文
字} } });
4.3.3停止mStopButton.setOnClickListener(new Button.OnClickListener()
{ public void onClick(View v) { // Perform action on click
if (mMusicPlayerService != null ) { mTextView.setVisibility(View.VISIBLE);//改变文字状态mPlayPauseButton.setVisibility(View.INVISIBLE);//隐藏按钮mStopButton.setVisibility(View.INVISIBLE);//隐藏停止按钮
mMusicPlayerService.stop();//后台音乐停止播放} } });
4.4MusicPlayerApp类该类继承与Application,是程序的生存类。可以标识音乐播放器的生命周期,包括音乐在后台播放等。
4.4.1单例模式public void onCreate() { super.onCreate(); mMusicInfoController = MusicInfoController.getInstance(this); //返回该类的一个唯一实例} public MusicInfoController