开发者社区> 异步社区> 正文

《Android游戏编程入门经典》——14.1节使用MediaPlayer播放音频

简介:
+关注继续查看

本节书摘来自异步社区《Android游戏编程入门经典》一书中的第14章,第14.1节使用MediaPlayer播放音频,作者【美】Jonathan S. Harbour,更多章节内容可以访问云栖社区“异步社区”公众号查看

14.1 使用MediaPlayer播放音频
Android游戏编程入门经典
android.media.MediaPlayer类可以让我们访问多媒体系统,展示在Android上加载和播放音频和视频文件的方法。Media Player是流式传输大型音频/视频资产的一种有用工具,并且无需将它们完整地加载到内存中,因为可供Android应用程序和游戏使用的内存有限。但Media Player不适合具有多种音效的游戏。它不是一种基于混合器的音频系统;其目的是每次从一个来源播放。我们可以使用Media Player组件播放游戏背景音乐的音乐文件,然后使用android.media.SoundPool播放混合音效(本章稍后将会介绍它)。

14.1.1 受支持的音频格式
Android SDK支持几种常见的音频文件格式。下列列表显示了在游戏项目中可能使用的最常见的音频格式。要获得Android SDK支持的资产文件的完整列表,请访问/screenshow?s://developer. android.com/guide/appendix/media-formats.html。

WAV
OGG
MIDI
MP3

注意:

将音频文件从一种格式转换为另一种格式的简单方法是使用名为Audacity的免费音频编辑器程序,可从http://audacity.sourceforge.net下载它。它可以将文件转换为WAV、MP3和OGG格式,或者是从这些格式转换回原格式。

14.1.2 初始化MediaPlayer
在程序中必须包含导入库android.media.MediaPlayer以便访问MediaPlayer类。要创建MediaPlayer对象,请使用静态方法MediaPlayer.create(),如下所示:

14.1.3 将音频文件添加到项目中
resource参数应该是在项目的.resraw文件夹中找到的资源的标识符。默认情况下,.res是标准Android项目的一部分,但是不会自动创建raw子文件夹。因此,必须自己手动将此文件夹添加到项目中。图14.1显示了Audio Demo(音频演示)项目(本章稍后将介绍它)中的.resraw文件夹。


08f63c09277431eb4fba744d03f96de86b5462f4

注意:

必须将.resraw文件夹手动添加到项目中,方法是创建此文件夹,然后将音频文件复制到新文件夹中。这样做时,资产管理器将检测文件并将它们添加到项目中。
资源标识符以大写字母R开头。此对象R表示项目的.res文件夹,具有由Eclipse检测到的详细资产列表。从 R 或.res开始,我们可以通过R.raw访问raw子文件夹。现在,在Eclipse中输入此内容时,将弹出一个在此文件夹中找到的资产列表。这非常有用。

说明:

由于内存使用问题,数字采样音频不是音乐的好选择。压缩的MP3或OGG文件可能只有4MB,但在加载它们时可能会增加到40MB。流式传输可能有用,但是会影响性能。建议对较长的音乐曲目选择小的非采样MIDI格式。
如果有一种Android不支持的音频文件格式或编解码器,将会怎么样?没有问题,可以使用名为Audacity的免费音频编辑工具将它转换为支持的格式,如图14.2所示。


7c54e1d4c09a8a46cf83c976089353afab5fb0c0

只需将音频文件拖放到Audacity,或者使用File(文件)>Open(打开)命令加载文件。打开音频剪辑后,使用File(文件)>Export(导出)命令将文件导出为一种新格式,如图14.3所示。


be7a078acf21d24feddd4508ded8ef67e451b6be
AIFF (Apple) signed 16-bit PCM
WAV (Microsoft) signed 16-bit PCM
GSM 6.10 WAV (mobile)
MP3
Ogg Vorbis
FLAC
MP2
M4A (AAC) (FFmpeg)
AC3 (FFmpeg)
AMR (narrow band) (FFmpeg)
WMA (version 2) (FFmpeg)

14.1.4 播放音频剪辑
MediaPlayer对象包含将直接播放的音频示例,因此调用MediaPlayer.start()会开始播放加载的音频示例。

要暂停播放,请使用MediaPlayer.pause()。

同样,要完全停止播放,请使用MediaPlayer.stop()``。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用libzplay库封装一个音频类
装载请说明原地址,谢谢~~     前两天我已经封装好一个duilib中使用的webkit内核的浏览器控件和一个基于vlc的用于播放视频的视频控件,这两个控件可以分别用在放酷狗播放器的乐库功能和MV功能上,也可以用于其他duilib项目,说起来做仿酷狗程序,但是至今我虽然把仿酷狗的主界面做好了,但是还没有播放音乐的功能,所以今天就再封装一个音频类。
1256 0
Android 开发者如何函数式编程 (一)
本文讲的是Android 开发者如何函数式编程 (一),大多数人当听到函数式编程时,他们会想到 Hacker News 发布的一些关于单子、高阶函数以及抽象数据类型的内容。这好像是一个离平时辛勤编码的程序员很远的神秘领域,它仅仅属于强大的黑客们。
1162 0
Android官方开发文档Training系列课程中文版:管理音频播放之控制APP的音量与播放
原文地址:http://android.xsoftlab.net/training/managing-audio/index.html 引言 如果APP需要播放音频,允许用户可以控制音频的播放状态是很重要的一点。
849 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载