android Audio 应用接口 转载

本文介绍了Android平台上音频的基本操作机制,主要包括录音与播放两大部分。录音部分涉及AudioRecord的使用,包括初始化设置、开始录音及读取数据的过程;播放部分则通过AudioTrack实现音频数据的播放。
android提供一套完整的audio机制,对上层用户而言,概括起来就是两个方面:录音(record)和播放(track).
了解了这两个简单的接口,对开发普通的audio应用基本上就足够了。总结如下:

录音(record):
min = AudioRecord.getMinBufferSize(Freq,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
这是在查询系统对特定的采样频率和模式下需要的最小数据包大小。Freq 可以设8000, 16000,32000, 44100, 48000.但是得参考具体的硬件平台参数, 某些平台是只支持固定的采样频率的。
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, Freq, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,
min);
这就是实际的record对象了。可以看到这个例子里的设置是MIC采样,单声道,PCM 16B的。这就已经配置了用户需要的audio参数。
recorder.startRecording();

while(true)
{
recorder.read(buf_id, 0, min);

}
这就是真正干活的部分了,值得注意的是read的最后一个参数min并不一定是上文求出的数值,使用者完全可以根据实际情况,自己推算出合适的数值。
最后别忘了关门:)
recorder.stop();
recorder.release();

播放(playback/track):
接口与recorder非常类似。
int iMinBufSize = AudioTrack.getMinBufferSize(sampleRate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
这是在询问系统固定模式下的最小buffer size。
track = new AudioTrack(AudioManager.STREAM_VOICE_CALL, sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,
iMinBufSize, AudioTrack.MODE_STREAM);
得到对象了。具体解释参见上文。
while(true)
{
track.write(buf_id, 0, chunkSize);
}
干活!同样,这个写 的数目需要使用者自己测算。
收工:
track.flush();
track.release();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值