1、课 程 名: 软件工程综合实践 实践项目: 基于 Android 的手机音乐播放器一、课程设计题目 基于 Android 的手机音乐播放器二、课程设计内容(含技术指标)本程序是基于 Android 开源系统技术,利用 Java 语言和 Eclipse 编辑工具对播放器进行编写。程序功能如下:用户可以按照以下规则进行操作:1音乐播放:界面对歌曲操作有播放、暂停、停止、音量控制、上一首/下一首播放模式:随机播放、顺序播放、单曲循环。2. 音乐管理:音乐列表、专辑:显示全部音乐文件,能直接选择播 放歌曲。艺术家:归类艺术家的音乐文件。最近播放:记录用户最近播放的音乐文件,方便用户再次使用。3显示歌词
2、:能显示播放歌曲的歌词。4添加音乐:在文件夹中添加音乐进播放列表。5删除音乐:删除播放列表的歌曲。三、进度安排1第四周分组分工,5 人。并选择题目2第五九周独立完成各自内容及相关文档。3第十周周整合,联调。4第十一周答辩。四、基本要求1各组指定组长一名,组长负责分工,分工要求要明确,不得重叠。组长有加分。各个成员独立完成各自的部分,不得抄袭。2答辩要求每个人讲清楚自己做的部分。课程负责人签名: 年 月 日目录第一章 引言 61.1 目的及范围 6第二章 需求说明 72.1 系统参与者 72.2 系统用例 72.3 领域模型分析 .8第三章 架构设计说明 113.1 逻辑视图 113.2 进程视
3、图 113.3 开发视图 123.4 物理视图 133.5 用例视图 14第四章 用例设计 154.1 播放音乐用例设计 154.2 暂停音乐用例设计 .164.3 切换音乐用例设计 164.4 显示音乐列表用例设计 .174.5 删除音乐用例设计 184.6 显示艺术家用例设计 194.7 显示专辑用例设计 204.8 显示最近播放用例设计 .214.9 启动随机播放用例设计 .224.10 启动单曲循环播放用例设计 .234.11 播放进度调节用例设计 .24第五章 设计类说明 265.1 设计类字典 26第六章 测试 286.1 测试需求 286.2 测试用例 286.3 缺陷 35参考
4、文献 37心得体会 38第一章 引言1.1 目的及范围随着科技的进步,手机的功能也不断的得到丰富,从最早的“大哥大”到现在的商务手机,只能手机,音乐手机等等,功能也从单纯的打电话发展到了发短信,听歌,上网手机和我们生活的联系越来越紧密,手机的功能也是很多人们关注的焦点。目前手机的音乐播放器已经是大家比较关注的一个部分,不少人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也不输于传统的音乐播放器,而且还具有网上听音乐动能,所以开发一款受欢迎的手
5、机音乐播放器软件是具有良好的市场和应用前景。一款专业的音乐播放器软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放器软件,通过软件可以对音乐欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以网上就出现了各种各样的手机音乐播放器软件,来满足不用用户的不同要求。不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是 google 的 android 手机平台,所以本课题就致力于开发出一款基于 android 手机平台的音乐播放器,来满足用户的使用需求。1.2 术语Android:一种以 Linu
6、x 为基础的开放源码操作系统,主要使用于便携设备。SDK:Software Development Kit,即软件开发工具包,是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操纵系统等建立应用软件的开发工具的集合。AVD :Android Virtual Device,即 Android 运行的虚拟设备。DDMS:Dalvik Debug Monitor Service,是 Android 开发环境中的 Dalvik 虚拟机调试监控服务。Activity:Android 组件中最基本的组件,在一个 Android 应用中,一个 Activity通常就是一个单独的屏幕。Intent 是
7、 Android 中的重要组件,可以被认为是不同组件之间通信的“媒介” 或者“信使”。使用它可以启动 Activity,Service 还可以发起一个广播(Broadcast ) 。Intent 对象由Action、Data、Category 、Component 和 Extra 组成。Service:一种长生命周期的、没有用户界面的程序。Broadcast Receiver:为了实现系统广播而提供的组件。ContentProvider:实现不同组件之间的数据共享。第二章 需求说明2.1 系统参与者手机用户2.2 系统用例图 2.2 系统用例模型图2.3 领域模型分析领域模型:MusicSer
8、viceMusicListAdapterScanSdReceiverTestMainRecentlyActivity DBHelperLRCbeanMusicActivityAlbumActivityAlbumListAdapterArtistListAdapterArtistActivityApWidget图 2.3 领域模型图用例名称:播放音乐参与者:手机用户级别:用户目标涉众及其关注点:用户:用户通过选择播放器播放的功能,实现对音乐的播放过程。前置条件:sdcard 里保存有扩展名为 mp3 的音乐文件。后置条件:发出歌曲声音。主成功场景:1 用户打开音乐播放器。2 用户打开音乐列表,选
9、择待播放的歌曲名。3 进度条自动向右滚动。3a 读取歌词文本3b 显示歌词3c 歌词文件不存在用例名称:暂停歌曲参与者:手机用户级别:用户目标涉众及其关注点:用户:用户通过选择播放器暂停的功能,实现对音乐的暂停播放过程。前置条件:正在播放音乐。后置条件:静音。主成功场景:1 用户选择暂停按钮。2 播放器暂停播放,进度条停止自动向右滚动。用例名称:切换下一首参与者:手机用户级别:用户目标涉众及其关注点: 用户:用户通过选择播放器的切换下一首歌曲功能,实现对音乐的切换播放过程。前置条件:正在播放歌曲。后置条件:下一首歌曲正在播放。主成功场景:1 用户选择切换下一曲按钮。2 屏幕显示下一首歌曲的名称
10、,进度条开始滚动。用例名称:显示音乐列表参与者:手机用户级别:用户目标涉众及其关注点:音乐界面的音乐列表显示歌曲前置条件:sdcard 里保存有扩展名为 mp3 的音乐文件。后置条件:音乐列表能全部显示出扩展名为 mp3 的歌曲名主成功场景:1 用户打开音乐播放器。2 用户打开音乐列表,查看歌曲。用例名称:删除歌曲参与者:手机用户级别:用户目标设众及其关注点:前置条件:sdcard 里保存有扩展名为 mp3 的音乐文件。后置条件:该歌曲已经从音乐列表中删。主成功场景:1 用户打开音乐界面 2 用户对要删除歌曲,长按直至弹出操作列表 3 用户选择删除操作并确认该动作。用例名称:显示艺术家参与者:
11、手机用户级别:用户目标涉众及其关注点:音乐界面的艺术家列表显示歌曲的歌手前置条件:sdcard 里保存有扩展名为 mp3的音乐文件。后置条件:艺术家列表能全部显示出扩展名为 mp3 的歌曲名的歌手主成功场景:1 用户打开音乐播放器。2 用户查看艺术家列表,查看艺术家和艺术家的歌曲。用例名称:显示专辑参与者:手机用户级别:用户目标涉众及其关注点:音乐界面的专辑列表显示歌曲前置条件:sdcard 里保存有扩展名为 mp3 的音乐文件。后置条件:专辑列表能显示歌手的专辑名及歌曲主成功场景:1 用户打开音乐播放器。2 用户查看专辑列表,查看专辑名和专辑内的歌曲。用例名称:显示最近播放参与者:手机用户级
12、别:用户目标涉众及其关注点:无前置条件:曾经播放过歌曲。后置条件:最近播放歌曲名称被保存到列表里主成功场景:1 用户打开播放器。2 用户选择最近播放按钮。用例名称:启动随机播放参与者:手机用户级别:用户目标涉众及其关注点:用户:用户通过选择播放器随机播放功能,实现音乐文件随机播放。前置条件:sdcard 里保存有扩展名为 mp3 的音乐文件,歌曲列表里面有音乐文件。后置条件:在播放完当前音乐后,会随机播放歌曲列表里面的其中一首音乐。主成功场景:1 用户打开音乐播放界面。2 在播放界面点击随机播放按钮。3 当前歌曲播放完,会随机播放歌曲列表里面的音乐文件。3a 用户点击下一首,随机播放歌曲列表里
13、面的音乐文件。用例名称:启动单曲循环播放参与者:手机用户级别:用户目标涉众及其关注点:无用户:用户通过选择播放器随机播放功能,实现音乐文件单曲随机播放。前置条件:sdcard 里保存有扩展名为 mp3 的音乐文件,歌曲列表里面有音乐文件。后置条件:在播放完当前音乐后,会重新播放该音乐文件。主成功场景:1 用户打开音乐播放界面。2 在播放界面点击单曲循环播放按钮。第三章 架构设计说明3.1 逻辑视图逻辑视图包含最重要的设计类、包和子系统中类的组织,以及各层中这些包和子系统的组织。它还包含某些用例实现,它是设计模型的子集。逻辑视图包含类图、状态图。其中系统的包图表示如下:、 、 、 、图 3.1
14、逻辑视图3.2 进程视图进程视图( Process View)是为了便于理解系统的进程组织,在“分析设计”工作流程中使用了名为进程视图的构架视图。系统只有一个进程视图,它以图形方式说明了系统中进程的详细组织结构,其中包括类和子系统到进程和线程的映射。此仿真系统案例进程视图如下:图 3.2 进程视图3.3 开发视图此视图概括了开发者创建开发环境是需要知道的信息。图 3.3 开发视图3.4 物理视图部署试图可以大概的描述物理视图。部署视图描述位于节点实例上的运行构件实例的安排。节点是一组运行资源,如计算机、设备或存储器等,部署视图用部署图来表达。下图表示系统简单部署图:图 3.4 部署图3.5 用
15、例视图详细请参阅第二章的系统用例,图如下:图 3.5 用例视图第四章 用例设计4.1 播放音乐用例设计4.1.1 播放音乐时的控件界面:图 4.1.1 4.1.2 播放音乐时序图: 、 、 、1.、2.、3.、4.、menu、“、”、 、menu、图 4.1.24.2 暂停音乐用例设计4.2.1 暂停音乐时的控件界面:图 4.2.14.2.2 暂停音乐时序图、: 、 、 、图 4.2.24.3 切换音乐用例设计4.3.1 切换音乐控件:图 4.3.14.3.2 切换音乐时序图: 、 、 、 、图 4.3.24.4 显示音乐列表用例设计4.4.1 显示音乐列表的图标控件:图 4.4.14.4.2
16、 显示音乐时序图:: 、 、 、图 4.4.24.5 删除音乐用例设计4.5.1 删除音乐的界面:图 4.5.14.5.2 删除音乐时序图: 、 、 、 、 、“、”“、”、“、”、图 4.5.24.6 显示艺术家用例设计4.6.1 显示艺术加界面:图 4.6.14.6.2 显示艺术家时序图:: 、 、 、l、图 4.6.24.7 显示专辑用例设计4.7.1 显示专辑的界面:图 4.7.14.7.2 显示专辑时序图::、 、 、 、 、图 4.7.24.8 显示最近播放用例设计4.8.1 显示最近播放界面:图 4.8.14.8.2 显示最近播放时序图:: 、 、 、图 4.8.24.9 启动随
17、机播放用例设计4.9.1 随机播放控件:图 4.9.14.9.2 随机播放用例时序图:、 、 、 、 、 、图 4.9.24.10 启动单曲循环播放用例设计4.10.1 启动单曲循环播放的控件:图 4.10.14.10.2 启动单曲循环播放时序图:: 、 、 、 、 、 、图 4.10.24.11 播放进度调节用例设计4.11.1 播放进度调节控件:图 4.11.14.11.2 播放进度调节时序图:: 、 、 、 、 、图 4.12.2第五章 设计类说明5.1 设计类字典包含以下的设计类 设计类 属性 方法AlbumActivity_ids,_titles,_artists,_path,_li
18、stview,pos,albumNameonCreate()AlbumListAdaptermyCon,albums,myMap getCount(),getItem(),getItemId(),getView()AppWidgetPLAY_ACTION,NEXT_ACTION,LAST_ACTION,START_APPonReceive(),onUpdate(),ArtistActivity_ids,_titles,_artists,_path,_listview,pos,artistNameonCreate(),playMusic(),deleteMusic(),deleteMusicFi
19、le(),onContextItemSelected(),setListData()ChangeGestureDetectoractivity ChangeGestureDetector(),onFling(),DBHelper TAB_NAME,db,CREATE_TAB DBHelper(),onCreate(),insert(),update(),delete(),query(),queryRecentlyLRCbean beginTime,lineTime,lrcBody getBeginTime(),setBeginTime(),setLineTime(),setLrcBody(),
20、getLrcBody()MusicActivityLoopBtn,RandomBtm,playBtn,latestBtn,forwordBtn,rewindBtn,playtime,seekbar,soundbar,fHandlerMusicListAdaptermyCon,myCur getCount(),getItem(),MusicServiceMUSIC_CURRENT,MUSIC_DURATION,MUSIC_NEXT,MUSIC_UPDATE,MUSIC_LIST,MUSIC_PLAY,MUSIC_PAUSE,MUSIC_STOPonDestroy(),onStart(),onBi
21、nd(),pause(),play(),stop()RecentlyActivitylistView,maxVolume,currentVolume onStop(),onCreate()ScanSdReceiverAd,builder onReceive()第六章 测试6.1 测试需求需求编号 需求简述 优先级 备注说明AM-001 界面显示 高AM-002 界面切换 高AM-003 播放音乐 高AM-004 暂停歌曲 高AM-005 切换歌曲 高AM-006 显示音乐列表 中AM-007 删除歌曲 中AM-008 显示艺术家 中AM-009 显示专辑 中AM-010 显示最近播放 中AM-
22、011 启动随机播放 中AM-012 启动单曲循环播放 中AM-013 界面友好型 高AM-014 显示歌词 中AM-015 快捷键功能 高AM-016 播放进度调节 中AM-017 音量调节 高AM-018 扫描 sd 卡 高AM-019 兼容性测试 高AM-020 鼠标和键盘结合控制 高6.2 测试用例界面显示测试界面切换测试播放歌曲测试测试项编号 AM-001优先级 高测试项描述 界面显示前置条件 打开 AM 音乐播放器用例序号 输入 执行步骤 预期结果1 查看界面颜色 界面字体颜色与背景颜色分明测试项编号 AM-002优先级 高测试项描述 切换显示前置条件 打开 AM 音乐播放器用例序
23、号 输入 执行步骤 预期结果1 音乐列表,艺术家,专辑,最近播放点击不同 跳转到相应的界面测试项编号 AM-003优先级 高测试项描述 播放音乐前置条件 打开 AM 音乐播放器用例序号 输入 执行步骤 预期结果1 点击选择播放文件 跳转到播放界面,播放音乐成功暂停歌曲测试切换歌曲测试显示音乐列表测试测试项编号 AM-004优先级 高测试项描述 暂停歌曲前置条件 打开 AM 音乐播放器,正在播放音乐用例序号 输入 执行步骤 预期结果1 点击音乐暂停按钮 音乐暂停,停止播放音乐测试项编号 AM-005优先级 高测试项描述 切换歌曲前置条件 打开 AM 音乐播放器,播放界面正在播放音乐或者暂停音乐用
24、例序号 输入 执行步骤 预期结果1 点击上一首按钮 音乐跳转到上一首播放的音乐文件,播放上一首音乐文件2 点击下一首按钮 音乐跳转到下一首准备播放的音乐文件,播放下一首音乐文件测试项编号 AM-006优先级 高测试项描述 显示音乐列表前置条件 打开 AM 音乐播放器,用例序号 输入 执行步骤 预期结果1 点击打开音乐列表 打开音乐列表,显示所有被加进播放器的音乐文件删除歌曲测试显示艺术家歌曲测试显示专辑测试测试项编号 AM-007优先级 高测试项描述 删除歌曲前置条件 打开 AM 音乐播放器用例序号 输入 执行步骤 预期结果1 选择歌曲,长按直至弹出一个列表框,选择点击删除按钮显示删除歌曲成功
25、,在音乐列表找不到此音乐文件测试项编号 AM-008优先级 高测试项描述 显示艺术家前置条件 打开 AM 音乐播放器,正在播放音乐用例序号 输入 执行步骤 预期结果1 点击打开艺术家列表 打开艺术家列表,显示所有被加进播放器的音乐文件的艺术家名字测试项编号 AM-009优先级 高测试项描述 显示专辑前置条件 打开 AM 音乐播放器用例序号 输入 执行步骤 预期结果1 点击专辑列表 打开专辑列表,显示专辑显示最近播放列表测试随机播放测试单曲循环播放测试测试项编号 AM-010优先级 高测试项描述 显示最近播放前置条件 打开 AM 音乐播放器用例序号 输入 执行步骤 预期结果1 点击最近播放 进入
26、最近播放列表,显示最近播放的音乐文件。测试项编号 AM-011优先级 高测试项描述 启动随进播放前置条件 打开 AM 音乐播放器,正在播放音乐用例序号 输入 执行步骤 预期结果1 点击下一首 播放器在音乐列表里面随机选择一个播放文件播放,不会是当前播放的文件测试项编号 AM-012优先级 高测试项描述 启动单曲循环播放播放前置条件 打开 AM 音乐播放器,正在播放音乐用例序号 输入 执行步骤 预期结果1 无 当前歌曲播放结束后,在鼠标和键盘不改变下,播放器会自动重复播放当前歌曲。界面友好型测试显示歌词测试快捷键可用性测试测试项编号 AM-013优先级 高测试项描述 使用播放器,测试功能,界面是否友好,人性化前置条件 打开 AM 音乐播放器 用例序号 输入 执行步骤 预期结果1 无 使用 界面,功能友好,人性化测试项编号 AM-014优先级 中测试项描述 显示歌词前置条件 AM 音乐播放器,正在播放音乐用例序号 输入 执行步骤 预期结果点击一首歌曲播放 进入播放界面,并在界面可看到该首歌所对应的歌词测试项编号 AM-015优先级 高测试项描述 快捷键功能的可用性前置条件 AM 音乐播放器已打开用例序号 输入 执行步骤 预期结果用键盘上的按键控制音乐歌曲1、歌曲选择2、歌曲播放3、歌曲属性选择AM 音乐播放器可用键盘按键使用