钱甜
(西安航空职业技术学院 大学生艺术教育中心, 西安 710089)
随着移动互联网的快速发展,人们的精神生活也逐渐向移动互联网转移,移动应用已经逐渐占领了人们的日常生活,音乐,已经成为大部分人生活中不可缺少的一部分,移动互联网使音乐从PC机转移到手机或平板电脑上,数字音乐的出现也顺应了网络发展的趋势[1],充分的解决了音乐播放空间的局限性,所以构建简洁易用的在线音乐客户端有利于人们对音乐的追求,为音乐提供了良好的展示平台。
满足用户体验需求与功能设计需求。
(1) 友好界面,客户端的展示界面要直观简洁,易于操作。
(2) 响应迅速,对用户的请求快速处理。
(3) 无缝衔接,在运用到Android系统上时,程序运行的过程中要对电话、短信等程序的产生做好处理,程序切换要做到无缝对接。
在线音乐客户端功能设计框架,如图1所示。
(1) 歌曲的播放及控制
该系统的设计是控制音乐的播放,对歌曲控制开始和暂停,上下首播放歌曲进行控制。为歌曲的播放设置不同的播放模式。
图1 在线音乐客户端功能架构图
(2) 歌曲下载以及列表管理
音乐播放器要能够按照用户的需求对歌曲文件以及列表进行扫描,提供对各种列表进行管理的功能。
(3) 歌词控制以及图片显示
正在播放的歌曲要提供相应的歌词,并且对歌词进行调整,针对不同的歌曲要显示相关的专辑图片。
(4) 歌曲、歌词搜索
根据客户的需求对所需的歌曲、歌词以及相关图片进行搜索,对所获资源进行存储与展示。
(5) 个性设置
可以对播放器背景皮肤进行更改。
本文所设计的音乐在线客户端对软硬件的需求并不高,可以满足任何智能手机。Android在系统中集成了多媒体框架,可以通过此特性快速的开发属于自己的多媒体应用。Android操作系统自诞生以来,始终是开源的,所以不存在额外的成本与法律风险,该客户端可以直接在开发客户端进行下载。
在线音乐系统主要通过数据存储模块、网络连接模块、歌曲播放模块以及歌曲下载模块对系统进行设计与实现。整体框架如图2所示。
此模块主要是提供数据资源,根据不同的需求,会将系统中的数据转变为不同的方式进行存储。
2.1.1 歌曲信息存储
一般情况下,歌曲在系统中主要以文件的形式进行存储。在该系统中,主要以SQLite数据库的形式进行存储,在SQLite中,每一个表都会对应相应的歌曲信息。
歌曲的相关信息主要包括:歌曲名、歌手名、专辑名、文件格式、播放时长、文件大小、相关图片存储路径等等。这些信息都会按照调用频率被分割在数据表中[2]。具体的数据表设计如表1所示。
表1 分割数据表
在本次设计中,对数据库的操作接口进行了封装,并且针对客户的实际需求,提供了数据查找、修改以及增删的功能[3]。
2.1.2 配置信息的存储
本次所设计的音乐系统信息设置主要有耳机设置、一般设置、歌词图片设置、音乐云设置、其他设置。具体介绍如表2所示。
网络连接模块是在线音乐系统的主要模块。主要功能是客户端和服务器的连接。客户端在网络环境下在服务器上获得资源,有支持歌曲、歌词下载,歌曲识别等多种功能,网络连接模块的设计会针对不同的需求,提供不同的接口。
表2 系统设置信息表
该模块属于在线音乐客户端的核心模块,用户使用最多的模块便是歌曲播放模块。通过该模块可以实现对歌曲播放任务的控制,对播放列表选取上下首、暂停、播放控制。
2.3.1 歌曲播放模块设计
歌曲播放在后台运行,通过这方面来看,与Service组件的效果很接近,所以,对歌曲播放模块来讲,可以设计为一个Service。用户可以通过手机的HOME键退出应用程序,这些操作都不会对音乐的播放造成影响。播放控制的入口操作主要为歌曲项的点击播放,播放控制与用户操作关系流程如图3所示。
图3 播放控制流程
此音乐系统支持mp3等音频播放,支持播放手机终端。本系统需要对本地以及网络的各种输入流的差异性进行屏蔽,对不同输入流提供统一接口。
2.3.2 正在播放场景实现
正在播放场景可以为歌曲提供展示界面,主要包括歌曲歌词以及相关的图片,该用户界面是用户控制的界面[4]。场景界面布局设计如图4所示。
图4 播放场景界面
该模式的应用具有一定的普遍性,有播放及音量调整按钮,歌曲标题及歌词显示。控制栏在界面底部。控制栏上方为歌词。
2.4.1 下载模块设计
为了实现网络歌曲的下载,该客户端在网络曲库中提供了大量资源,系统提供网络搜索功能,用户可以将喜欢的歌曲添加到下载列表中。系统通过下载管理界面,对歌曲的下载任务进行管理。可以在“正在下载”的页面中对下载任务进行暂停或删除,可以在“下载完成”页面中进行歌曲播放、移出等操作。目前的手机终端已经进入了智能化阶段,该系统中,每次仅允许对一个任务进行下载,一个任务下载完成之后,自动继续下一个任务。受到这种策略的影响,“正在下载”的任务就会存在就绪、下载、暂停三种状态。除了用户明确指定启动或暂停某个任务,当有任务正在进行时,无论当前的下载任务被移除或者已经下载完成,系统都会自动开始下一任务的开始。
2.4.2 下载管理实现
在线音乐系统的下载管理模块实现,主要通过一个DownloadProvider的类以及相关的辅助类进行实现。根据不同用户的需求进行相对应的相应,并且可以通知前端下载管理页面进行更新。在底层网络连接模块中要为DownloadProvider提供网络资源,设计用于网络资源请求的接口。
在线音乐客户端在音乐播放的过程中,歌曲文件已经还冲到本地,已经缓冲的本地文件是可以利用的,在底层的网络连接模块中为歌曲文件的下载提供断点续传功能。在歌曲缓冲或者下载完成之后,程序会进行相应的操作,保证文件按照正常的音频格式进行存储[5]。添加新下载任务的流程如图5所示。
2.4.3 下载界面设计
在下载管理界面中,主要由正在下载与下载完成两个列表组成,通过这两个列表可以对歌曲的下载任务进行管理。在正在下载任务项中,会给用户展示任务的下载进程,包括下载进度、歌曲名以及相关信息。下载完成任务项会包含歌曲所在列表的索引、播放、暂停状态以及歌曲的相关信息等。
该测验主要是针对MP3解码播放的测试,可以实现MP3格式音乐文件的解码播放,使系统的播放功能更加全面,对播放流程也有所控制,而且为系统提供了更好的扩展性能。对于MP3解码播放功能的测试,主要可以通过以下几方面来进行:
图5 添加下载任务流程
(1) 对播放稳定性的测试:在Android设备中,确保电源充足的前提下,长时间的播放MP3格式歌曲,体验歌曲播放的质量。在中兴X876手机上,对不同来源的100首MP3歌曲进行循环播放。只有两首出现破音情况,主要原因是解码播放模块所获取的比特率不准确。测试的整体效果能够达到预期的要求。
(2) 资源消耗测试:在同一设备中,分别通过系统解码器和自己实现的解码器对MP3歌曲进行播放,观察两者资源的消耗情况。在中兴X876手机上,将其他程序关闭,采用自己实现的解码器,CPU的使用率在20%。而采用系统解码器CPU使用率在15%。所以,该解码播放模块比较符合消耗标准。
(3) 兼容性测试:在不同的硬件条件下,程序使用自己实现的解码播放模块的系统消耗与整体的运行情况相比较。将该音乐客户端运行于不同的Android设备上,该音乐客户端表现的都很顺畅,在配置相对较低的手机上,CPU的占用率会偏高,但是不影响正常使用。
结束语:本文主要对在线音乐客户端进行设计,针对数据存储、网络连接、歌曲播放以及下载等模块具体分析。基本能够实现应用的具体需求,但是仍然存在一些不足,例如:产品的展示主要依赖列表的形式,页面组织比较单调;在解码播放模块中,仅实现了MP3格式文件的解码播放。在后续的研究中,需要对该系统进行进一步拓展与完善。