四川大学软件学院基于Android的音乐播放器需求分析与设计010203需求分析概要设计详细设计CONTENT0201需求分析PARTONE1.需求分析任务概述需求规定运行环境规定041.任务概述05项目目的安卓手机需要音乐播放器才能播放手机内的音频文件,本软件具备音乐播放器的播放歌曲、歌曲列表、拖动进度等基本功能,同时本播放器界面简洁美观,操作简单便捷。用户特点用户可以点击按钮来控制音乐的播放,暂停,上一曲,下一曲,点播以及续点重播,停止等。假定与约束经费限制:500元以内。时间限制:该软件开发周期有限,尽量控制在18周内完成。2.需求规定07对功能的规定用户可以通过下载到手机上的软件,来控制音乐的播放,暂停等操作。2.需求规定07输入输出要求1.输入:播放输出:音乐将播放2.输入:暂停输出:音乐播放暂停,要是继续点击可以续点播放3.输入:停止输出:音乐将停止4.输入:下一曲输出:将播放下一首歌(如果越界,将重播原曲,并提示已经是最后一首歌)5.输入:上一曲输出:将播放上一首歌(如果越界,将重播原曲,并提示已经是第一首歌)6.输入:音乐列表中的歌曲输出:将播放相应的歌曲2.需求规定07故障处理要求如果在运行过程中软件崩溃或者无法运行时,用户可以强制退出或者强行关闭软件。其他处理要求系统的可维护性:本系统具有定期数据备份、恢复的能力。由于是课程实践的项目,考虑到时间以及人员技术原因,软件的完善性暂不予要求。系统的容错性:对用户的输入数据会进行提示,输入数据格式类型错误会提示出错,具有较好的容错性。系统可靠性:系统经过详细的设计,具有一定可靠性,稳定性。系统的运行环境可转换性:该系统为基于Android的签到系统,所以只能在操作系统为Android的系统上运行,当然也可以在Android虚拟机上运行,但不具有运行环境可转换的特点。3.运行环境规定05设备该软件为基于Android音乐播放器,故目前只能在Android设备上使用。支持软件软件运行环境:安卓模拟器。软件开发环境:eclipse。接口因为该系统没有与外界其它系统存在信息传递,所以暂时无系统接口。内部接口可以忽略不计。控制用户通过下载软件来对音乐进行控制也可以通过在虚拟机中运行并测试。02概要设计PARTTWO1.系统结构图09音乐播放器菜单播放列表歌曲列表播放界面播放退出歌曲列表上/下一曲选歌暂停2.模块划分序号模块名称功能说明1播放模块播放,详情,加入铃声库等2设定模块播放模式,歌词显示3添加模块添加歌曲,背景图片4自定义模块歌曲评论,上传评论3.接口外部接口:不需要特定的外部接口来进行支持。内部接口:在Android系统或带有Android虚拟机的系统中运行,没有应用其他内部接口。4.出错处理可能出现的错误信息:1、文件格式无法识别出现错误2、解码错误3、信息管理混淆4、播放列表保存失败补救措施:1、播放列表保存失败,可具有防御措施和恢复功能,可以恢复上一次登录时的播放列表。2、防止自动弹出,自动退出系统,保存上一次的播放进度。3、软件应捕获的错误,并采取的错误转移处理措施。03详细设计PARTTHREE1.基本处理流程打开音乐播放器暂停下一曲上一曲播放播放当前歌曲播放下一曲结束播放播放当前歌曲播放上一曲关闭音乐播放器NYYYNNY2.程序设计描述程序模块Java平台程序开发播放/暂停/停止模块音量模块上一曲/下一曲模块3.播放/暂停/停止模块开始结束流程图:点击事件是否为播放是否为播放是否为播放暂停暂停停止播放获取当前状态获取当前状态停止歌曲暂停歌曲获取当前状态播放歌曲NYYYNN//播放按钮playPauseBtn.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){intcmd=0;Intenti=newIntent(MusicService.MUSIC_CONTROL);//判断当前的状态值是什么状态if(status==MusicService.STATUS_PLAYING){cmd=MusicService.CMD_PAUSE;//发送暂停的命令}elseif(status==MusicService.STATUS_STOPPED){cmd=MusicService.CMD_START;//发送播放的命令}else{cmd=MusicService.CMD_RESUME;//继续播放的命令}i.putExtra(cmd,cmd);sendBroadcast(i);}});部分关键代码如下:4.上一曲/下一曲模块流程图:开始单击事件上一曲下一曲获取当前歌曲位置跳转到下一曲目有无后继有无前驱获取当前歌曲位置跳转到上一曲目结束YNNY部分关键代码如下://上一曲键previousBtn.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){Intenti=newIntent(MusicService.MUSIC_CONTROL);intcmd=MusicService.CMD_PREV;//发送前一首的命令i.putExtra(cmd,cmd);sendBroadcast(i);}});//下一曲键nextBtn.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){Intenti=newIntent(MusicService.MUSIC_CONTROL);intcmd=MusicService.CMD_NEXT;i.putExtra(cmd,cmd);sendBroadcast(i);}});5.音量模块流程图:开始单击事件获取当前音量音量加1音量增音量是否为0获取当前音量音量减1结束YNNY音量是否为10NNYY部分关键代码如下://获取点击事件voiceUp=(ImageButton)findViewById(R.id.music_voiceup);//音量增加voiceDown(ImageButton)findViewById(R.id.music_voic_down);//音量减小audiomanage=(AudioManager)getSystemService(Context.AUDIO_SERVICE);voiceDown.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){audiomanage.adjustVolume(AudioManager.ADJUST_LOWER,0);Volume=audiomanage.getStreamVolume(AudioManager.STREAM_RING);if(volume0){volume--;audiomanage.setRingerMode(volume);}}});部分关键代码如下://声音控制按钮声音增加voiceUp.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){audiomanage.adjustVolume(AudioManager.ADJUST_RAISE,0);volume=audiomanage.getStreamVolume(AudioManager.STREAM_RING);if(volume7){volume++;audiomanage.setRingerMode(volume);}}});四川大学软件学院感谢各位聆听ThanksforListening