AudioSource.VOICE_COMMUNICATION不适用于支持VOICE_COMMUNICATION的所有设备

时间:2014-11-19 14:16:57

标签: android audiorecord echo-cancellation

我在 AudioRecord 实例中使用 AudioSource.VOICE_COMMUNICATION 作为支持此功能的所有设备的源代码。 这对我的所有平板电脑都有效,除了一个。 “Acer Iconia Tab 8”

AcousticEchoCanceler,AutomaticGainControl,NoiseSuppressor可用。 Android版本为4.4.2

接收设备仅获取带有嗡嗡声的音频数据。 如果我使用 AudioSource.MIC 在不支持 AudioSource.VOICE_COMMUNICATION 的设备的后备版上使用 AudioSource.MIC ,但是没有需要的EchoCancelation,哪个应该支持这个设备。

final int bufSize = Math.max(1 * 2 * 8000, AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT));
AudioRecord rec;
try {
    final int src = MediaRecorder.AudioSource.VOICE_COMMUNICATION;
    rec = new AudioRecord(src, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufSize);
} catch (IllegalArgumentException e) {
    Log.d("AudioRecorder", "echo cancellation NOT enabled (old android version)");
    final int src = MediaRecorder.AudioSource.MIC;
    rec = new AudioRecord(src, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufSize);
}

有人对这种奇怪的行为有所了解吗?

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题并通过更新Android解决了这个问题。