android 录音失败有状态返回码,android-AudioRecord start()错误状态-38

好吧,这就是我认为我需要做的,应该在AudioRecorder文档中进行讨论,但是这个类似的问题使我得到了答案AudioRecord object not initializing

基本上,您要做的是遍历所有配置,并针对AudioRecord.ERROR_BAD_VALUE进行检查,这也是因为我计划使用长度必须为2的幂的fft,所以我添加了一点if if if if if anybody否则会遇到类似情况

public AudioRecord findAudioRecord() {

for (int rate : mSampleRates) {

for (short audioFormat : new short[]{AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT}) {

for (short channelConfig : new short[]{AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO}) {

try {

//Log.d("audioSetup", "Attempting rate " + rate + "Hz, bits: " + audioFormat + ", channel: " + channelConfig);

int bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat);

if (bufferSize > 0 && bufferSize <= 256){

bufferSize = 256;

}else if (bufferSize > 256 && bufferSize <= 512){

bufferSize = 512;

}else if (bufferSize > 512 && bufferSize <= 1024){

bufferSize = 1024;

}else if (bufferSize > 1024 && bufferSize <= 2048){

bufferSize = 2048;

}else if (bufferSize > 2048 && bufferSize <= 4096){

bufferSize = 4096;

}else if (bufferSize > 4096 && bufferSize <= 8192){

bufferSize = 8192;

}else if (bufferSize > 8192 && bufferSize <= 16384){

bufferSize = 16384;

}else{

bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat);

}

if (bufferSize != AudioRecord.ERROR_BAD_VALUE) {

// check if we can instantiate and have a success

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, rate, channelConfig, audioFormat, bufferSize);

if (recorder.getState() == AudioRecord.STATE_INITIALIZED) {

Log.d("found", "rate: " + rate + " channelConfig: " + channelConfig + " bufferSize: " + bufferSize + " audioFormat: " + audioFormat);

sampleRate = rate;

channelConfiguration = channelConfig;

audioEncoding = audioFormat;

buffersizebytes = bufferSize;

return recorder;

}

}

} catch (Exception e) {

Log.d("audioSetup", rate + "Exception, keep trying.", e);

e.printStackTrace();

}

}

}

}

return null;

}

似乎效果很好.谢谢您的帮助.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值