Android AcousticEchoCanceler无法正常工作

时间:2016-01-08 11:44:34

标签: android echo-cancellation

您好我正在尝试将VOIP功能添加到Android应用程序中。为此,我需要声学回声消除。
我已经看过AcousticEchoCanceler here的官方文档。
我正在使用这段代码进行声学回声消除:

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)的情况下,回声被取消。
(当我将源设置为VOICE_COMMUNICATION时,我没有使用AcousticEchoCanceler)但是使用相同的Android版本,相同的方法不适用于三星Galaxy S4和三星Note 4等设备。
使用回声消除库(如libspeexdsp等)是不可能的(因为我正在处理现有项目)。
请尽快帮助。
非常感谢你。

1 个答案:

答案 0 :(得分:0)

确保音频模式设置为MODE_IN_COMMUNICATION