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