课程设计报告
实习名称 课程设计2
设计题目 Android音乐播放器的设计与实现
目录
摘要11
1 引言22
2 可行性分析22
2.1 技术可行性22
2.2 经济可行性33
2.3 管理可行性33
2.4 可行性分析结论33
3 系统需求分析44
3.1 功能分析44
3.2 数据流程分析44
4 系统功能设计66
4.1 播放器功能结构66
4.1.1 播放器主界面功能模块66
4.1.2 播放器菜单功能模块77
4.2 播放器功能流程77
5 系统实现88
5.1 播放器主界面功能列表88
5.2 播放器基本功能的实现1111
5.3 播放列表的实现1212
6 软件测试与验证1313
6.1 软件测试的目的1313
6.2 软件测试的方法1313
6.3 软件测试环境1414
6.3.1 android模拟器1414
6.3.2 真机测试1414
6.4 软件测试流程与结果评估1414
6.4.1 测试流程1414
6.4.2 结果评估1515
6.5 本章小结1616
7 总结1616
参考文献1818
Android音乐播放器的设计与实现
(德州学院 信息管理学院,山东德州 253023)
摘要:本文主要介绍了一个基于Andriod的音乐播放器的设计与实现。主要包括可行性分析,需求分析,App功能设计及实现。本次课程设计选择了开发Android音乐播放器(以下简称播放器),主要是因为音乐播放器涉及的Android基础知识比较广,本次的开发过程中主要设计到Service、网络数据传输、Handle消息机制、多线程、Sqllite数据存储。在本次音乐播放器的设计与实现中,我们小组进行了明确的分工,在代码的编写过程中,我们使用了SVN工具,大大节省了在代码整合上花费的时间。
关键字:Andriod;智能手机;音乐播放器;SVN
1 引言
在软件设计之前,首先对 android 底层架构方面的资料进行了大量研究,并对目前市场上的各类音乐软件进行了分析,以此为基础对用户的需求进行了详细分析,然后根据分析结果对整个软件的架构及功能模块进行了设计,在UI方面做了个性化的设计,提高用户和播放器的互动性,另外软件的功能中还加入了较多的人性化功能,比如来去电自动暂停功能、利用进度条自由控制音乐播放进度等。本软件基于 Android 架构进行实现,主要实现了个性化设置、播放控制等多个功能模块。软件实现过程中,笔者首先利用 Eclipse 软件构建了Android开发环境,采用Java语言进行编写,在代码编写完成后,对软件的功能性及性能进行了模块测试,并对测试过程中发现的 BUG 进行了修正和优化调整。最终通过实机测试,确定该软件具有体积小、可移植性强、可扩展性强、对终端设备配置要求低等优点,适用于大范围的高中低档Android手机用户,而且能够保持长时间的稳定运行状态。
据国外媒体报道, IDC(互联网数据中心)周二发布了2014年智能手机出货量数据,采用Android和iOS操作系统的智能手机出货量占全部智能机出货量的96.3%。其中Android出货量为10.59亿部,同比增长32%;市场份额为81.5%,去年同期为78.7%。iPhone出货量为1.927亿部,同比去年增长25.6%;市场份额为14.8%, 去年同期为15.1%。这表明谷歌的Android操作系统2014年仍明显领先于其他的手机操作系统。
2 可行性分析
2.1 技术可行性
先进性
本次APP的开发使用了模块化开发的方式,这种开发方式解决软件的复杂性问题,或说降低软件的复杂性。不至于随着项目变大而不可控而失败,使其可控,可维护,可扩展。
可靠性
本APP的功能比较的单一,但是仍然不能忽略可靠性问题,不会有用户会喜欢一个经常崩溃的应用程序。在本APP的设计中,我们尽量降低代码的冗余度,尽量对代码进行抽象,封装和捕捉异常。
2.2 经济可行性
可维护性
系统设计应标准化、规范化,按照分层设计,软件构件化实现。按照类型进行组织代码,对代码进行分层,主要体现在对代码的包结构进行设计,相同功能的类放在同一包中。
可拓展性
想要拓展APP的功能,就要做好核心控制组件的设计。本APP以Service为核心开发的,可以通过调用Service中的方法进行功能的调用,Service中应设计出接口,方便以后功能的扩展。
2.3 管理可行性
实用性
考虑到要尽量满足业务功能需求的前提下,又要适应各业务角色的工作特点,该系统做到简单、实用、人性化,实现了验证身份和资源管理、分级内容管理和内容定制。
开放性
在系统构架、采用技术、选用平台方面都有较好的开放性。特别是在选择产品上,我们采用符合开放性要求,遵循国际标准化组织的技术标准,我们的产品既有自己的独特优势,又能与其他多家优秀的产品进行组合,共同构成一个开放的、易扩充的、稳定的、统一软件的系统。
2.4 可行性分析结论
应用系统从技术层面具有先进性和可靠性,经济方面具有可维护性、可伸缩性和可移植性,管理层面具有实用性和开放性,体现了该系统的可行性,似的用户在使用系统时更方便快捷,可靠稳定。
3 系统需求分析
3.1 功能分析
根据用户的普遍需求,本APP主要实现的功能有:本地文件的搜索、播放列表的生成、音频的基本播放控制、播放器个性化定制图片切换、音频处理设置的实现、开始界面的动画效果、电话异常的处理。
3.2 数据流程分析
根据该项目的设计目标,对产品进行场景化推导出项目系统的基本需求,从不同角度来描述系统的需求,同时使用用例图来描述软件的功能需求。本小节从本地文件的搜索,播放列表的生成,音频的基本播放控制需求,播放器个性化定制图片切换,音频处理设置的实现,开始界面的动画效果,电话异常的处理等八个部分来概括。在该部分的分析描述中,结合UML统一建模语言进行必要的图形化分析。
图 数据流图
(1)本地文件搜索
音频文件通常存储于移动设备的本地SD卡中,音乐播放器需要实现查询SD卡中音频文件的随心播放,这也是音乐播放器的设计初衷。播放本地音乐可以不受网路条件的限制,同时还能够有效节约网络流量的消耗。
(2)音频的基本控制需求
音频的基本播放控制是整个音乐播放器的核心功能,因此,其设计至关重要。在打开音乐播放器之后,首先就使用户能够明显地看到屏幕的播放按钮,方便进行音乐播放。同时播放按钮能够在播放与暂停两个功能之间进行切换,这样既能保证为用户提供丰富的功能,又能保证界面的简洁。另外根据用户需要可以随时点击任意曲目进行播放,如果用户不做选择将自动播放下一曲目。当前音乐的播放进度条是可以任意拖放的,也就是可以选择任意位置开始播放音乐,使用户能够通过触摸滑动及点击的错做方式对播放进度条进行自由控制。
(3)播放列表的生成
播放列表的功能在于为用户对本地音乐文件的管理提供方便。当用户第一次启动播放器时,软件自动查找音乐素材,形成播放列表排列于界面中,下一次播放音乐时就无须重新查找,可以直接调用当前的播放列表进行播放。
(4)播放器个性化定制图片切换
播放视觉模式的切换并非播放器的必要功能,但为了给用户带来更高的视觉体验,播放器视觉效果的切换功能必不可少。 用户通过点击菜单按钮进入菜单选项,然后点击设置界面可以获得用户 SD 卡中原有图片或照片,用户可以选择设置为当前界面,更换自己喜欢的图片。
(5)音频处理设置的实现
音量设置是通过设置界面进行的,可以设定当前播放音乐的音量高低。
(6)开始界面的动画效果
采用淡出方式消隐开始画面,出现播放界面,给人清新舒适的感觉。 应用程序窗口小部件AppWidgets,是微小的应用程序视图。它可以被嵌入到其他程序中并接收周期性的更新。
4 系统功能设计
4.1 播放器功能结构
4.1.1 播放器主界面功能模块
播放器的主界面主要是指用户在进入播放器之后最先出现在用户眼中的界面,该界面上通常需要具备一些简单的操作按钮。
1)歌曲切换
通过该功能,用户能够实现对歌曲的切换操作,切换到当前歌曲的上一首或下一首进行播放,如果只有一首歌曲时,该功能键将失去作用。
2)本地音乐自动搜索
用户通过该功能能够快速搜索移动设备本地存储中的音频文件。通过歌曲名或者相关信息的关键字对本地音频文件进行搜索。在查找到歌曲后可以直接对该歌曲进行播放、管理以及添加到列表等操作。该功能的设计目的是为了方便用户对本地音频文件进行快速搜索定位。
3)播放进度条的显示与控制
通过播放进度条能够较为直观的将当前曲目的播放进度信息展示给用户。利用播放进度条显示当前歌曲的播放状态,从而也使播放器的 UI 设计更加简洁。同时,还能对该播放进度条进行触摸控制,大大提高了用户的操作效率。
4)音乐播放的控制
通过音乐播放控制按钮能够实现对当前播放曲目的控制,主要包括播放、暂停、停止等操作。这些按钮的加入,也保持了播放器UI设计的简约风格。
4.1.2 播放器菜单功能模块
菜单功能按钮是指用户在进入播放器主界面后,点击手机菜单按钮时弹出来的功能列表,功能列表中目前只设定简单的功能选择项,但是已经提供了增加选项的接口,可以为用户提供更多的功能定制。
设置选项将转到设置界面,提供用户摇一摇换歌和更新的设置。
4.2 播放器功能流程
在完成对播放器的主界面功能模块以及菜单功能模块的设计之后,需要对播放器的功能进行设计,它决定了用户操作流程的体验度。优秀的音乐播放器并不是依靠单纯的功能叠加而成的,而是需要通过对用户的需求就行研究,实现用户满意的功能流程,让用户获得更高的操作体验。具体流程如下:
(1)启动播放器;
(2)进入播放器后,播放器自动加载本地音频文件;
(3)若播放列表中存在文件信息,且文件源文件存在则进行歌曲播放;
(4)若播放列表为空,则可以利用功能菜单进行本地歌曲添加,然后返回播放界面进行歌曲播放;
(5)在播放音乐的过程中,可以对播放歌曲的相关信息进行查看并进行播放控制的操作;
(6)用户可以利用歌曲的关键信息结合软件提供的搜索功能对本地存储中的音乐进行快速搜索,并对搜索结果进行管理;
(7)用户可以通过菜单按钮进入软件的而功能菜单列表,并对这些功能进行操作;
(8)通过点击暂停按钮可以停止当前歌曲的播放,在暂停状态下,用户通过点击设备返回按钮,可以退出播放器程序。
图 4.2 播放器功能流程图
5 系统实现
5.1 播放器主界面功能列表
根据前文中对音乐播放器功能结构的分析以及对主界面功能的简单分析。在对功能模块进行设计的基础上使用DroidDraw工具编码出XML文件并导入Android ADT中能够得到如下结果。
(1)UI设计
播放器的主要色调采用浅蓝色作为背景底色,各个按钮使用深色,整体风格显得更加舒适并附有强烈的时尚气息。播放器主界面功能列表主要包括基本控制功能按钮(播放、暂停、切歌等)、搜索按钮、播放列表按钮以及播放主信息显示区域。
(2)核心代码:
具体的主界面实现核心代码如下:
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.iv_play:
if(state==State.Paused){
startService(new Intent(MusicService.ACTION_PLAY));
iv_play.setImageResource(R.drawable.cf_open);
state=State.Playing;
}else{
startService(new Intent(MusicService.ACTION_PAUSE));
iv_play.setImageResource(R.drawable.cf_close);
state=State.Paused;
}
break;
case R.id.rl_localmusic://本地音乐
intent =new Intent(MainActivity.this,MusicListActivity.class);
intent.putExtra("from", "all");
startActivity(intent);
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
break;
case R.id.rl_file://文件夹
intent =new Intent(MainActivity.this,MusicListActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
break;
case R.id.rl_singer://歌手
intent =new Intent(MainActivity.this,MusicListActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
break;
/*case R.id.rl_type://专辑
intent =new Intent(MainActivity.this,MusicListActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
break;*/
case R.id.rl_love://喜欢
intent =new Intent(MainActivity.this,MusicListActivity.class);
intent.putExtra("from", "like");
startActivity(intent);
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
break;
case R.id.rl_playmusic://音乐播放界面
intent =new Intent(MainActivity.this,PlayActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.vertical_in, R.anim.vertical_out);
break;
case R.id.ll_zaixian://在线音乐
intent =new Intent(MainActivity.this,OnlineActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
break;
case R.id.ll_saomiao://扫描音乐
intent =new Intent(MainActivity.this,ScanActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
break;
case R.id.ll_shuimian://睡眠定时
intent =new Intent(MainActivity.this,SleepActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
break;
case R.id.ll_shezhi://设置
intent =new Intent(MainActivity.this,SettingActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
break;
case R.id.ll_tuichu://退出
finish();
unbindService(conn);
stopService(new Intent(MainActivity.this, MusicService.class));
System.exit(0);
break;
}
}
5.2 播放器基本功能的实现
(1)功能描述
播放器的基本功能主要包括对歌曲的播放、暂停、停止等控制功能。
(2)播放器基本控制功能流程设计
在启动播放器之后,如果播放列表中存在文件信息,则点击播放按钮之后正常进行音乐播放;当处于正常音乐播放情况下点击暂停或停止按钮可以实现暂停或停止当前音乐的播放,当音乐播放处于暂停或停止的状态下,用户可以通过点击移动设备的返回按钮退出播放器程序,具体的流程图如下:
(3)核心技术
开发人员可以利用Android提供的android.media包来实现对各种音视频媒体接口
的管理。在 android 系统源码中封装了媒体播放接口类 MediaPlayer,该接口类在执行的过程中首先需要接收媒体数据源并依此通过如下三个步骤完成对音乐的基本播放控制:
第一,利用 MediaPlayer.reset()函数对媒体播放类接口进行复位操作。在调用该函数后再利用MediaPlayer.prepare()函数进行重新实例化;
第二,利用 MediaPlayer.serDataSource()函数对媒体数据流进行设置,数据源的获取需要利用getContentResolver()函数进行获取。
第三,在接收媒体数据流之后,使用MediaPlayer.prepare()函数准备播放数据源,然后调用MediaPlayer.start()函数进行播放,同时还可以利用MediaPlayer.stop()函数停止播放。
5.3 播放列表的实现
(1)功能描述
播放列表的主要功能在于对音乐文件的管理。用户在点击菜单按钮之后,弹出菜单功能列表,然后用户选择播放列表选项并选择播放列表文件夹,将音乐文件添加到主页面的播放列中。同时播放列表还提供了删除、清空等管理选项,该功能可以通过长按播放列表中的文件名进行实现。
(2)功能实现核心技术
播放列表选项被激活后会自动搜索本地音频文件,并根据音频文件中ID3标签所提供的各项信息对音频文件进行分类显示。在程序设计中可以利用哈希表对列表信息进行保存,然后将保存的信息发送给 ArrayAdapter 适配器,以在播放列表中进行展示。同时可以利用 OnClickListener接口类实现用户的操作响应。
6 软件测试与验证
6.1 软件测试的目的
通常情况下,在软件系统设计完成之后,需要进行软件的性能测试,这主要是为了让软件的运行更加稳定、功能更加完美,为用户提高较高的使用体验。在进行软件开发的过程中,由于其高度复杂性,bug 是必然存在的,通过对软件的各项功能以及运行状态进行测试,可以保证每项功能的正确运行,同时也能使系统更加稳定的运行,保证了整个软件功能及性能的良好。
针对本文研究的音乐播放软件软件系统,要想保证软件系统的功能完整性和满足用户的实际操作需求,需要对设计开发的软件进行性能检测,然后对软件的各项功能以及整体性能所进行的以此总体评估。通过软件测试,具体可以实现以下目的:
(1)通过软件的运行可以检测出代码的bug以及在逻辑功能上的缺陷;
(2)可以检测出软件的具体运行性能,并根据该性能测试是否是有编码或者逻辑运算问题造成的;
(3)可以有效改善系统软件在设计过程中的漏洞和不足。
6.2 软件测试的方法
由于不同软件应用范围和使用性质不同,所以软件进行性能测试的技术方法各不相同,本文主要研究的是音乐播放软件,根据这一软件系统的功能和性质,主要采用单元测试的方法对音乐播放软件的不同功能进行测试。作者采用这种方法的主要目的是为了保证每一个单元的功能完整性。
软件测试人员要想对系统功能进行单元测试,首先要准确掌握和了解系统模块的基本信息和内部控制电路,这样才可以对单元模块进行全面测试,并且可以及时发现和完善模块中存在的漏洞和不足。软件系统进行单元测试通常有两种方法,它们分别是黑盒测试法与白盒测试法,其中白盒测试法由于技术比较成熟,应用的范围比较广泛。白盒测试法其本质是对系统模块的逻辑结构进行测试。具体操作过程是测试人员按照模块的内部程序进行检测,以此来判断模块的每个程序是否按照预期的要求进行工作。
白盒测试法其实是将测试模块当作一个透明盒子,测试人员通过认真分析模块内部的逻辑结构,然后选择比较符合的测试程序进行相关功能检测。这样可以有效的保证检测结果的准确性和合理性。
6.3 软件测试环境
6.3.1 android模拟器
模拟器系统版本android4.0或以上版本
6.3.2 真机测试
可以通过几款Android手机真机对软件进行测试,具体选择的真机及具体配置如下表6.3.2所示。
表6.3.2 Android真机具体配置情况
手机型号 | CPU型号 | CPU频率 | RAM | 操作系统 |
小米2s | 高通 骁龙APQ8064 Pro | 1.7GHz | 2GB | Android 5.0 |
魅族魅蓝Note | 联发科 MT6752 | 1.7GHz | 2GB | Android 4.4 |
华为荣耀3c | 联发科 MT6582 | 1.3GHz | 1GB | Android 4.2 |
6.4 软件测试流程与结果评估
6.4.1 测试流程
(1)测试计划
1)在音乐播放器开发工作完成后进行软件测试;
2)根据软件需求分析中对软件的各种需求所提出的要求选择相关程序实例进行检测。
(2)需要测试的内容:
1)系统模块重要单元的数据检测;
2)系统模块中不同数据结构之间的连接通路检测;
3)模块接口的兼容性检测;
4)模块中经常出现错误的通路检测。
5)模块边界值条件检测;
(2)测试准备
在制定好相应的测试计划后组织必要的人力资源及硬件资源准备。
(3)测试工作的执行
1)根据测试计划以及测试用例对软件进行模块测试;
2)在测试过程中发现bug时,应进行跟踪管理;
3)测试结束后编写详细的软件测试报告;
6.4.2 结果评估
对该音乐软件的具体测试评估结果如表6.4.2。
表6.4.2测试结果评估内容
测试选项 | 具体步骤 | 评估结果 |
基本播放功能测试 | 1播放器主界面有五个关于控制播放的功能按钮,分别点击各个按钮测试按钮是否会对播放器的正常工作产生影响 | 通过 |
2测试播放按钮是否能够正常进行音乐播放 | 通过 | |
3点击单曲播放及实现顺序播放,注意乐曲之间的切换播放,多放几首歌检测该功能是否实现 | 通过 | |
4测试播放按钮与暂停按钮之间的切换功能 | 通过 | |
5在歌曲停止播放后,按设备的返回键是否能够正确的退出播放器应用程序 | 通过 | |
播放进度条 | 1是否正确显示当前歌曲的播放进度信息 | 通过 |
2测试是否能够通过触摸操作对进度条进行控制 | 通过 | |
歌曲切换 | 1点击上一首或下一首按钮是否能够实现歌曲之间的切换 | 通过 |
2切换按钮是否能够对当前播放队列中的歌曲完全切换 | 通过 | |
3跳转到播放列表结尾时,是否能够停止跳转 | 通过 |
6.5 本章小结
Android 软件的测试方法还处在探索阶段,本研究所用的的测试方法为白盒模块测试,根据软件的需求对播放器的功能及性能进行了全面测试,测试结果表面从功能和性能来看该软件达到了预期效果
7 总结
由于计算机网络技术的更新换代以及社会发展的实际需求,人们对于手机的选择越来越亲睐于触摸屏智能手机。触摸屏智能手机是在原来的按键手机的基础上发展起来的。现在大多数智能手机都采用Android系统,这主要是因为Android系统更加开放,更加人性化。现在全球各大手机制造商都对Android系统进行了深入研究和广泛应用,因此,对于Android系统的研究分析具有一定的市场价值。针对目前Android软件市场音乐播放器品质良莠不齐以及广大安卓手机用户迫切需要一款功能专一,界面清爽美观,同时占用较少手机资源的音乐播放器的问题,我们设计并实现了该款Android平台的手机音乐播放器。通过软件工程理论对该播放器从需求分析、系统实现、系统测试三个方面阐述了基于Android嵌入式平台的手机音乐播放器的实现过程。
本文主要完成了以下几个方面的工作:
1、在分析国内外研究现状的基础上,结合现有 Android 音乐播放器的实现原理和功能特色,重新设计出该款功能使用流程便捷的音乐播放器。
2、研究并学习基于 Android 嵌入式平台开发技术,Android 平台开发采用 Java 语言为主导,结合XML语言进行UI界面的开发。
3、针对用户研究后分析音乐播放器的功能需求,将播放器功能分成播放器主界面功能模块和播放器菜单功能模块。主界面功能模块包括播放/暂停/停止功能、播放进度条功能、本地音乐搜索功能、歌曲信息显示功能、窗口小部件功能等。
4、阐述从播放器系统实现的角度对需求分析得出的功能模块进行详细具体的实现细节。
5、最后分别使用基于 Android 嵌入式平台模拟器和 Android 手机真机对该款音乐播放器进行功能和性能测试。经过对系统的功能和性能测试分析表明该系统达到预期的设计目标。
参考文献
[1]赵江洪主编.人机工程学[M]. 高等教育出版社, 2006.
[2]吴亚峰,索依娜.Android核心技术与实例讲解[M].北京:电子工业出版社,2010.
[3]张基温.信息系统开发案(第3版)[M].北京:清华大学出版社,2002.22-34.
[4]汪应洛主编.系统工程[M]. 机械工业出版社, 2003.
[5]曾毅.数据库开发技术大全[M].北京:清华大学出版社.2010.
[6]李刚,著.疯狂Java[M].电子工业出版社, 2008.
[7]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2003.12-26.
[8]郑晓艳,童勇木编著.Java程序设计教程[M]. 清华大学出版社, 2003.
[9]郑人杰,殷人昆,陶永雷.实用软件工程(第二版)[M].北京:清华大学出版社,2003,113-154.
[10]余建星编著.工程项目风险管理[M].天津大学出版社, 2006.
[11]刘欣怡.软件工程[M].北京:清华大学出版社,2007,75-96.
[12]古乐,史九林编著,上海艾微软件技术有限公司主编.软件测试技术概论[M].北京:清华大学出版社, 2004.
[13]黄梯云,李一军.管理信息系统(第三版)[M].北京:高等教育出版社,2005.107-182.
[14](美)BruceEckel著,陈昊鹏,饶若楠等译.Java编程思想[M].机械工业出版社, 2005.
[15](美)B.约瑟夫·派恩(B.JosephPineⅡ),(美)詹姆斯·H.吉尔摩(JamesH.Gilmore)著,夏业良,鲁炜等译.体验经济[M]. 机械工业出版社, 2002.