7.2.1 使用AudioTrack播放音频特效

更新于 2026年10月10日 版权声明
7.2.1 使用AudioTrack播放音频特效

要想学好AudioTrack API,读者可以从分析Android源码中的Java层源码做起。

1)第一段代码如下

图示

针对上述代码有如下两点说明。

(2)AudioTrack.MODE_STREAM

在AudioTrack中有MODE_STATIC和MODE_STREAM两种分类。

■ STREAM:由用户在应用程序中通过write方式把数据一次一次地写到AudioTrack中。

这个过程和在socket中发送数据一样,应用层会从某个地方获取数据,例如通过“编

/解码”的方式得到PCM数据,然后写入到AudioTrack。这种方式的缺点就是总是在

Java层和Native层交互,效率较低。

■ STATIC:意思是一开始创建的时候,就把音频数据放到一个固定的buffer,然后直接

传给AudioTrack,后续就不用一次次地使用write操作了。AudioTrack会自己播放这

个buffer中的数据。这种方法对于铃声等内存占用较小、延时要求较高的声音来说很

适用。

(3)StreamType

StreamType在构造AudioTrack的第一个参数中使用,此参数和Android中的AudioManager类有关系,涉及手机的音频管理策略。(https://www.daowen.com)

Android将系统中的声音分为以下几类。

■ STREAM_ALARM:警告声。

■ STREAM_MUSIC:音乐声,例如music等。

■ STREAM_RING:铃声。

■ STREAM_SYSTEM:系统声音。

■ STREAM_VOICE_CALL:电话声音。

其实系统将这几种声音的数据分开管理,所以这个参数对AudioTrack来说,它的含义就是告诉系统:我现在想使用的是哪种类型的声音,这样系统就可以对应管理它们了。

接下来将通过一个具体实例的实现过程,讲解用AudioTrack播放音频的方法。

图示

编写主程序文件AuTrackCH.java,主要代码如下

图示

图示

图示

执行之后会播放根目录中的音频文件test.wav,如图7-2所示

图示

图7-2 执行效果

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)