- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《手机播放
7.2? 音乐播放器 在Android平台中,以可选包的方式提供了一个名为android.media的包来提供用于播放多媒体文件的API。
7.2.1? 音乐播放器开发引言对于任何一个拥有多媒体手机的读者而言,如果能够自主开发出一款定制的手机音乐播放器是一件多么令人有成就感的事情。如果说仅仅是在WTK模拟器上,那么使用MMAPI就可以做出一个简单的音乐播放器来,然而如果要真正应用到实机上却不是那么一帆风顺的事情,在本节中笔者会逐步向读者解释这么说的原因。图7-1是一款音乐播放器在WTK模拟器和NOKIA 5310实机上的运行界面。
该款播放器在实机上支持mp3、wma、mid、aac(Advanced Audio Coding,高级音频编码)、mxmf、amr、nrt(NOKIA Ring Tone,NOKIA自谱铃声)等音乐媒体类型。
提示? 音乐播放器能够播放的音乐媒体类型都是实机可以支持的类型。如果实机不支持播放某种格式的音乐文件,那么音乐播放器也将无法播放该类型的文件。
7-1 音乐播放器在WTK模拟器和NOKIA 5310实机上的运行界面
7.2.2 音乐播放器的功能说明
(1)实现播放的基本功能。它包括播放控制、音量调节、扩展卡资源读取支持等。
(2)流畅的播放效果。本案例中采用播放池(Player Pool)策略,这一策略将使播放过程更为流畅。造成播放停滞的原因主要有两个方面:一方面基于MIDlet的安全考虑,每当读取本地文件时手机系统都要求进行手动确认,这样就会间断播放过程。另外一方面,每次对音乐文件的播放预处理也会造成一定的播放间隔。
(3)完全满足手机厂商所支持的音乐媒体类型,支持尽可能多的音乐媒体类型。本案例中采用的是系统自动匹配的策略,即由手机系统本身来识别播放音乐类型。
以上的要求看似比较简单,但是由于模拟器环境和实机环境的差异,在实际开发中总会遇到一些小问题,接下来就和读者朋友们分享开发手机音乐播放器的苦闷和惊喜。
7.2.3 音乐播放池
Player)而影响效率的情形。通过播放池方式,可将所有的播放器对象放入池中进行管理,播放指定的音乐文件时只需要在播放池中获取对应的播放器对象进行播放即可,而无须重新初始化播放器状态。这种方式的另外一个优点是还可以记录该音乐文件的播放状态,例如,播放位置、音量值等。
当然,采用播放池的方式会增加内存的消耗,在实施过程中需要结合硬件配置对池的大小进行调整。
7.2.4 设计分析
4个类:
(1)PlayerMIDlet,主MIDlet也是整个程序的入口,程序启动时显示音乐播放控制面板。
(2)AudioPanel,音乐播放控制面板,它是程序主界面,负责播放控制并对播放对象池进行管理。
(3)PoolHelper,对象池帮助类,负责生成播放对象池。
(4)AudioSettingPanel,音量控制面板,实现对播放过程的音量控制。
另外,音乐播放器工程还引入了文件选择模块(参见第3章),用于生成播放文件列表。图7-2是该工程的框架设计图。
图7-2 手机音乐播放器工程的框架设计图
7.2.5 音乐播放器的实现过程
1
如图7-3所示,当单击“添加播放列表”菜单时,播放器会调用文件选择组件来选择音乐文件,并将选择的文件添加到主界面的列表中。
图7-3 播放列表面板
代码7-1是调用文件选择组件的关键代码。
代码7-1 调用文件选择组件
//界面命令响应
public void commandAction(Command c, Displayable d) {
…… else if(c == cmdAddPlayList) {//添加播放列表
chooser = new FileChooser(this);
}
……
} 代码7-2是添加播放列表的核心代码。文件选择组件通过回调播放器主界面的finishAddList方法来实现播放列表的添加(第2行)。在添加之前还进行了播放项目的重复性判断(第19行),以免重复添加。
当播放项目添加成功后,以播放文件的资源字符串启动对象池帮助线程PoolHelper(第40行),并提供开始播放命令(第46行)。
代码7-2 添加播放列表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 //结束添加列表
public void finishAddList() {
//显示当前界面(必须在showSelected之前)
display.setCurrent(playList);
//显示选择结果
showSelected();
}
//显
您可能关注的文档
最近下载
- 如何寻找鱼道,如何寻找钓点.ppt
- 医院中药饮片采购项目方案投标文件(技术方案).pdf
- 3.1 捐书(课件)2025-2026学年度北师大版数学三年级上册.pptx VIP
- 2020-2021学年苏教版数学二年级上册第四单元《 表内除法(一)》解决问题专项练习卷C.pdf VIP
- 人教版道德与法治三年级上册第5课《走近科学家》课件.pptx VIP
- 《儿童发展心理学》课件_7第六章 儿童语言的发展.ppt VIP
- 中秋博饼规则.doc VIP
- 药用单宁酸的制备.docx VIP
- 压力管道年度检查报告(空白).pdf VIP
- 2021届高考物理一轮复习_电磁学库仑力与力学综合类问题专题练习.docx VIP
文档评论(0)