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

Другие вопросы по тегам