Android AcousticEchoCanceler НЕ работает
Привет, я пытаюсь добавить функцию VOIP в приложение для Android. Для этого мне нужно акустическое эхоподавление.
Я видел официальную документацию для AcousticEchoCanceler здесь.
Я использую этот кусок кода для отмены акустического эха:
if(AcousticEchoCanceler.isAvailable()) {
echoCanceler = AcousticEchoCanceler.create(mAudioRecord.getAudioSessionId());
echoCanceler.setEnabled(true);
}
Но это, похоже, совсем не помогает. isAvailable() возвращает true и объекты echoCanceler создаются. Если я запрашиваю echoCanceler.getEnabled(), он также возвращает true.
Даже если я создаю пример приложения с использованием AudioRecord и AudioTrack, это не работает. Я слышал много эха.
Если я установлю источник AudioRecord как:
android.media.MediaRecorder.AudioSource.VOICE_COMMUNICATION
Я вижу, что эхо отменяется в случае Nexus 5(для Android версии 5 и 6).
(Я не использую AcousticEchoCanceler, когда я устанавливаю источник как VOICE_COMMUNICATION) Однако с той же версией Android, тот же метод не работает с устройствами Samsung Galaxy S4 и Samsung Note 4 и т. Д.
Использование echo Cancellation Libraries(например, libspeexdsp и т. Д.) Невозможно (так как я работаю над существующим проектом).
Пожалуйста, помогите как можно скорее.
Большое спасибо.
1 ответ
Убедитесь, что аудио режим установлен на MODE_IN_COMMUNICATION