《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()``。

相关文章
|
5月前
|
Android开发
【Android App】蓝牙的设备配对、音频传输、点对点通信的讲解及实战(附源码和演示 超详细)
【Android App】蓝牙的设备配对、音频传输、点对点通信的讲解及实战(附源码和演示 超详细)
131 0
|
5月前
|
XML Java Android开发
Android Studio App开发中使用录音机、MediaRecorder录制音频和MediaPlayer播放音频讲解及实战(附源码)
Android Studio App开发中使用录音机、MediaRecorder录制音频和MediaPlayer播放音频讲解及实战(附源码)
90 0
|
7天前
|
编解码 调度 Android开发
Android音频框架之一 详解audioPolicy流程及HAL驱动加载与配置
Android音频框架之一 详解audioPolicy流程及HAL驱动加载与配置
13 0
|
21天前
|
Android开发 内存技术
Android 通过tinyalsa调试解决录制和播放音频问题
Android 通过tinyalsa调试解决录制和播放音频问题
36 1
|
21天前
|
安全 Java Shell
Android11以上 Audio音频调试方法
Android11以上 Audio音频调试方法
69 0
|
5月前
|
XML 编解码 算法
Android开发音效中录制WAV音频和录制MP3音频的讲解及实战(超详细 附源码)
Android开发音效中录制WAV音频和录制MP3音频的讲解及实战(超详细 附源码)
89 0
|
5月前
|
XML Java 调度
Android开发音效增强中铃声播放Ringtone及声音池调度SoundPool的讲解及实战(超详细 附源码)
Android开发音效增强中铃声播放Ringtone及声音池调度SoundPool的讲解及实战(超详细 附源码)
70 0
|
5月前
|
XML Java Android开发
Android 开发中原始音频的录播和和自定义音频控制条的讲解及实战(超详细 附源码)
Android 开发中原始音频的录播和和自定义音频控制条的讲解及实战(超详细 附源码)
29 0
|
5月前
|
XML 存储 Java
Android 开发音频录播中媒体录制器MediaRecorder和媒体播放器MediaPlayer的讲解及实战(超详细 附源码)
Android 开发音频录播中媒体录制器MediaRecorder和媒体播放器MediaPlayer的讲解及实战(超详细 附源码)
49 0
|
5月前
|
XML Java Android开发
Android App开发音量调节中实现拖动条和滑动条和音频管理器AudioManager讲解及实战(超详细 附源码和演示视频)
Android App开发音量调节中实现拖动条和滑动条和音频管理器AudioManager讲解及实战(超详细 附源码和演示视频)
88 0