AudioSource.VOICE_COMMUNICATION не работает на всех устройствах, которые поддерживают VOICE_COMMUNICATION
Я использую AudioSource.VOICE_COMMUNICATION в качестве источника в моем экземпляре AudioRecord для всех устройств, которые поддерживают это. Это хорошо работает на всех моих планшетах, кроме одного. "Acer Iconia Tab 8".
Доступны AcousticEchoCanceler, AutomaticGainControl, NoiseSuppressor. Версия Android - 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);
}
У кого-нибудь есть идеи по поводу этого странного поведения?
1 ответ
Решение