项目编号:Boom!音乐播放器卷号卷内编号密级需求分析说明书项目承担部门:2012管工班第三组完成日期:2015.09.04本文档使用部门:评审负责人(签名):评审日期:目录1.简介........................................................................31.1目的...............................................................................................................................31.2范围...............................................................................................................................31.3APP参与者...................................................................................................................32.构架表示方式.........................................................33.构架目标和约束.....................................................34.APP用例.................................................................44.1播放/暂停/停止模块.........................................................................................................54.2上一曲\下一曲模块..........................................................................................................74.3音量模块..........................................................................................................................105.层次结构................................................................136.逻辑视图................................................................137.进程视图................................................................148.部署视图................................................................159.数据视图................................................................1910.大小和性能..........................................................1911.质量.....................................................................201.简介1.1目的本文档用于描述音乐播放器APP的总体架构,用于指导各app的具体实施。本文档的用户包括系统设计师、开发人员、测试人员、评审组成员。1.2范围此说明书适用于音乐播放器app项目。1.3APP参与者手机用户2.构架表示方式3.构架目标和约束主要建设功能:导入本地歌曲文件、选择显示歌词、更换皮肤、在线试听、在线下载(资源在服务器上)、选择显示歌手简介、选择显示专辑简介、选择推荐专辑内其他本地没有的歌曲、显示乐库歌曲排行榜、新建歌单、管理歌单等功能。交互设计:提供良好的交互设计、操作简单快速、按钮及菜单设计合理,合理引导用户使用。完善的日志,所有操作数据库记录日志。个性化:提供完全个性化的播放平台,为不同用户定制符合其喜好的歌曲及歌单,为其提供不同的主题样式、播放模式、播放菜单。用户记忆:提供记住用户名及记住密码功能,用户可选择记忆期限:周、月、半年、年、或永远。app能够承受一次下载同事下载5首歌曲、在播放同时下载的并发压力。各界面色彩基调相似。操作习惯、风格相似。4.APP用例歌曲界面控制可分为:播放/暂停/停止模块、上一曲/下一曲模块、音量模块。4.1播放/暂停/停止模块流程图:NNYYNY程序逻辑:开始点击事件是否为播放暂停暂停停止播放获取当前状态播放歌曲结束是否为播放是否为播放暂停歌曲停止歌曲获取当前状态获取当前状态当用户点击播放\暂停\停止按钮时,播放器就对当前播放事件监听从而控制当前音乐的播放\暂停\停止,部分关键代码如下://播放按钮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.2上一曲\下一曲模块流程图:NNYY开始结束单击事件上一曲下一曲获取当前歌曲位置获取当前歌曲位置有无后继有无前驱跳转到上一曲目跳转到下一曲目程序逻辑:当用户点击上一曲\下一曲按钮时,播放器就对当前播放事件监听,从音乐列表中转换音乐,从而控制当前音乐的上一曲\下一曲,关键代码如下://上一曲键事件监听器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);}});//设置SeekBar的监听事件sb.setOnSeekBarChangeListener(newOnSeekBarChangeListener(){//当停止拖动时调用的方法publicvoidonStopTrackingTouch(SeekBarseekBar){}publicvoidonStartTrackingTouch(SeekBarseekBar){}//当SeekBar拖动时会执行此方法publicvoidonProgressChanged(SeekBarseekBar,intprog,booleanfromUser){//fromUser参数意思是判断拖动是否是用户用手拖动的if(fromUser==true&&Math.abs(prog-progress)=5){progress=prog;Intenti=newIntent(MusicService.MUSIC_CONTROL);intcmd=MusicService.CMD_SEEK;//发送拖动的命令i.putExtra(cmd,cmd);i.putExtra(progress,progress);//讲拖动的进度传进ServicesendBroadcast(i);sb.setProgress(progress);}}});}4.3音量模块流程图:NYYNYN程序逻辑:声音有两个按钮控制,一个增加声音和一个减少声音。通过这两个按钮用户可以调节播放音乐的声音大小,用AudioManager开始单击事件获取当前音量音量增音量是否为7音量加1结束获取当前音量音量是否为0音量减1N组件对声音的大小进行增减,最大为7,最小为0。当用户点击声音按钮时,若是增按钮,对声音进行增加,若是减按钮对声音进行减小。部分代码如下://获取点击事件voiceUp=(ImageButton)findViewById(R.id.music_voic_up);//音量增加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);}}});5.层次结构6.逻辑视图系统采用J2EE技术,基于Liferay4.2.2开源门户框架进行开发,具体开发环境如下:JDK:1.7开发工具:Eclipse10、MyEclipse10应用服务器:Tomcat8.0数据库服务器:MySQL5.6版本控制:TortoiseSVN项目管理工具:MicrosoftProject20007.进程视图8.部署视图本项目使用SQLiteDatabase安卓内置数据库。数据库名称:musicstore_new表music_infoNameFieldPrimaryKeyCanitbeempty?Notes_idintegeryn主键songidin