基于Android的移动多媒体播放器软件的设计与实现
2014-03-18李德平
李德平
(清远职业技术学院 信息科技系,广东 清远 511510)
1 Android视频类软件应用市场分析
据市场研究机构——易观国际于2012年8月发布的数据显示,中国主要Android应用下载平台中,视频类应用总下载量均出现了一定幅度的增长。从各应用下载比例来看,在十大主流应用中,前四名合计占比达到73%,中国视频移动端市场呈现出极强的集中态势。易观数据显示,爱奇艺影视凭借24.4%的下载量占比(Android下载市场)继续保持行业领先地位,优酷和PPTV则分别以16.9%、16.6%的比率紧跟其后(如图1所示)。可以看出,视频移动端市场需求旺盛,竞争激烈,发展迅速,客户对软件的综合性能要求越来越高。
2 软件需求分析
为满足移动互联网用户对视频播放软件的不同需求,探索Android技术的应用,本文设计开发了基于Android 2.2及以上版本的播放器软件,支持多种视频及音频格式文件的播放,界面友好美观,操作方便快捷,系统资源占用率低,可靠性高。
2.1 功能需求
该软件功能需求分析如表1所示。
图1 Android市场视频类应用下载量
表1 功能需求分析
2.2 性能需求
本软件在设计方面本着方便、实用及娱乐性高的宗旨,性能需求分析如表2所示。
表2 性能需求分析
2.3 软件环境需求
2012年8月,中国移动互联网第三方数据研究与营销服务机构——艾媒咨询(iiMedia Research)发布的《2012Q2中国智能手机市场季度监测报告》显示,截至2012年Q2中国智能手机用户数达到2.90亿人,环比增长15.1%。在操作系统占有率方面,Android操作系统在中国智能手机市场中占据绝对领先地位,由上季度的55.4%迅速飙升为63.1%;Symbian系统依然主要靠市场的存量用户支撑,占比下降明显,为19.9%;iPhone由于新品迟迟没有补给以及昂贵的售后服务,后劲明显不足,迫于Android的强劲进攻,占比下降至1.7%;诺基亚Lumia系列WP手机尽管市场推广力度不弱,但是总体效果并不突出,WP系统占比2.8%,比上季度略有提升,但仍然处于市场弱势(如图2所示)。
图2 2012Q2中国智能手机市场操作系统占有率状况
本软件为适应市场环境,选择运行环境在Android 2.2及以上系统,具有512MB及以上内存的智能手机上。软件格式为1.65MB大小的apk安装包,简体中文版。
3 软件设计
3.1 总体设计
软件功能结构如图3所示。
图3 功能结构图
3.2 程序处理流程设计
软件类结构及程序流程如图4所示。
3.3 数据表结构设计
(1)音乐MadiaStore数据表(见表3)。
(2)最近播放歌曲数据表(见表4)。
实现方法是通过累计相应歌曲的点击率(clicks)和记录播放的时间点(latest)作为相应歌曲的数据属性,然后通过对相应歌曲所在的列表行序(_id)或歌曲序号(music_id)进行检索,可以得到相应歌曲的播放次数以及播放的时间点。该操作是判断相应歌曲是否属于最近播放过歌曲的依据。
图4 类结构及程序流程图
表3 音乐MadiaStore数据表
表4 最近播放歌曲数据表
(3)视频数据表(见表5)。
4 关键技术分析与实现
4.1 关键技术分析
表5 视频数据表
本软件设计的关键技术是实现音频和视频文件的同时播放以及文件播放进度与按钮状态更新的同步。在设计中,需使按钮状态和播放内容保持相应的一致。比如说,在滑屏换曲子或者是按下一曲、上一曲的按钮时,原本在播放界面处于暂停状态的歌曲(其按钮状态为暂停状态)会被切换到相应的另一首歌曲;同时其播放按钮的状态也需要更新为播放状态。
4.2 技术实现
Android帮助文档中将所有的控件都叫做Widget,平时我们说的Widget实际上是泛指App-Widget,即在手机桌面上放置的控件,比如时钟,日历等。通过使用AppWiget来实现对控件的监听与执行指令设定,特别注意的是AppWidget和其原本的App并不在同一个进程中,而是运行在HomeScreen进程当中,因此,对控件监听器的绑定、更新等操作与以前的基本方法都会有所不同。该过程一般需要实现一些相应的PendingIntent。PendingIntent是一个特殊的Intent,像一个邮包,其中包裹着真正的Intent。当邮包未打开时,Intent是被“挂起”的,所以并不执行,只有当邮包拆开时才会执行,可理解为延迟执行的Intent[1-3]。Android基本的设计理念是鼓励减少组件间的耦合,因此,Android提供了Intent意图,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它应用程序间传递Intent来执行动作和产生事件。使用Intent可以激活Android应用的三个核心组件,即活动、服务和广播接收器,如:RemoteViews.setOnClickPendingIntent(R.id.widgetButtonId,pendingIntent),其中,RemoteViews表示了一系列View对象,即AppWidget所有的控件,其标示的对象都运行在另外的进程中。括号内的第一个参数就是需要绑定的控件,第二个参数是点击后触发执行的PendingIntent。在实现了为控件绑定监听器之后,仍需有能够接收AppWidget中的广播的机制,即AppWidget与AppWidgetProvider的互动,其具体实现步骤如下:
(1)在AndroidManifest.xml中为AppWidget-Provider注册intent-filter;
(2)使用getBroadcast方法创建一个Pending-Intent对象;
(3)为AppWidget中的控件注册处理器,即绑定监听器;
(4)在onReceive方法中接收广播消息。
最后是AppWidget中控件状态的更新实现。在AppWidget中的更新操作是使用RemoteViews的一系列方法进行的,比如更换图片:Remote-Views.setImageViewResource等,更新后使用App-WidgetManager通知AppWidget进行更新[2-3]。这里的广播发送须在onReceive方法里实现更新操作,即需要覆写onReceive方法。事件的广播是构建Intent对象,然后调用sendBroadcast( )方法将广播发出。事件的接受是通过定义一个继承Broadcast Receiver的类来实现的,继承该类后,覆盖其on-Receive( )方法,在该方法中响应事件[4-5]。
4.3 软件实现
(1)类的实现
本软件所涉及的类的实现如图5所示。
图5 欣悦影音播放器软件所实现的类
(2)功能效果图
欣悦影音播放器软件部分功能效果如图6、图7、图8、图9所示。
图6 3D立体特效旋转
图7 音乐播放
图8 摇甩换歌曲
图9 视频播放
5 小结
基于Android的欣悦影音多媒体播放软件开发了多媒体播放器界面,具有音乐播放、视频播放、管理多媒体文件等功能;主要克服了播放控制条的控制、消息处理、声音的播放、视频图像的显示、多媒体文件的搜索与自动检测、播放列表生成、播放内容与进度条同步等技术难题。本软件的创新点在于超炫个性化菜单,3D立体画面旋转切换,音视频播放完美组合,摇甩换歌曲,设置个性化皮肤,睡眠定时,系统资源占用率低等。
[1]谢景明.Android移动开发教程(项目式)[M].北京:人民邮电出版社,2013:160-216.
[2]苗忠良,宛斌.Android多媒体编程从初学到精通[M].北京:电子工业出版社,2011:106-148.
[3](美)ChrisHaseman.Android应用开发[M].北京:人民邮电出版社,2013:144-159.
[4]赵书兰.Android开发与实战[M].北京:电子工业出版社,2013:425-464.
[5]郭金尚.Android经典项目案例开发实战宝典[M].北京:清华大学出版社,2013:493-519.