初始AudioTrack和PCM的录制与播放
Audio系统
先看看Audio里边有哪些东西?通过Android的SDK文档,发现主要有三个:
- AudioManager:这个主要是用来管理Audio系统的
- AudioTrack:这个主要是用来播放声音的
- AudioRecord:这个主要是用来录音的
其中AudioManager的理解需要考虑整个系统上声音的策略问题,例如来电话铃声,短信铃声等,主要是策略上的问题。
上一篇文章中已经讲述了audio’re’cord的使用,和相关参数的解释,没有看过的可以看一哈 音视频开发 原声方法生成PCM 以及PCM转为wav ,如果你本身已经对audiorecord有一定的了解,开始吧
AudioTrack的创建和配置
`
static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat)
public AudioTrack(int streamType, int sampleRateInHz, int channelConfig, int audioFormat,
int bufferSizeInBytes, int mode)
`
上篇文章中大部分参数都已经介绍过,现在只介绍新的参数
streamType
这个在构造AudioTrack的第一个参数中使用。这个参数和Android中的AudioManager有关系,涉及到手机上的音频管理策略。
Android将系统的声音分为以下几类常见的(未写全):
l STREAM_ALARM:警告声
l STREAM_MUSCI:音乐声,例如music等
l STREAM_RING:铃声
l STREAM_SYSTEM:系统声音
l STREAM_VOCIE_CALL:电话声音为什么要分这么多呢?以前在台式机上开发的时候很少知道有这么多的声音类型,不过仔细思考下,发现这样做是有道理的。例如你在听music的时候接到电话,这个时候music播放肯定会停止,此时你只能听到电话,如果你调节音量的话,这个调节肯定只对电话起作用。当电话打完了,再回到music,你肯定不用再调节音量了