android Audio 应用接口

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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值