2016-01-08 3 views
3

Привет Я пытаюсь добавить функцию VOIP в приложение Android. Для этого мне нужно аннулирование акустического эха.
Я видел официальную документацию для AcousticEchoCanceler here.
Я использую этот кусок кода для Эхоподавления:Android AcousticEchoCanceler NOT Working

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 и т. Д.) НЕВОЗМОЖНО (поскольку я работаю над существующим проектом).
Пожалуйста, помогите как можно скорее.
Большое спасибо.

+0

Любые удачи в этом? У меня такая же проблема. Устройства, которые имеют AcousticEchoCanceler и, кажется, работают: Nexus 5 (Android версия: 6.0.1) Moto X (Android версия: 5.1.1) Dont похоже на работу: Samsung Galaxy Гранд Prime (Android версии: 5.1. 1) Samsung Galaxy S6Edge (версия для Android: 5.1.1) HTC One – rmp251

+1

Попробуйте настроить аудиорежим на 'MODE_IN_COMMUNICATION'. –

+0

Вивек, это была проблема в моем случае! – rmp251

ответ

0

Убедитесь, что аудиорежим установлен на MODE_IN_COMMUNICATION