2

我在我的 AudioRecord 实例中使用 AudioSource.VOICE_COMMUNICATION 作为所有支持的设备的源。这适用于我所有的平板电脑,除了一个。“宏碁 Iconia Tab 8”

AcousticEchoCanceler、AutomaticGainControl、NoiseSuppressor 可用。安卓版本为4.4.2

接收设备只收到带有蜂鸣声的音频数据。如果我使用AudioSource.MIC用于不支持AudioSource.VOICE_COMMUNICATION的设备的后备,它可以工作,但没有 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);
}

有人知道这种奇怪的行为吗?

4

1 回答 1

2

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

于 2015-01-28T12:48:32.080 回答