【2013-10-09】Android AcousticEchoCanceler使用笔记 📅 2026/6/25 19:57:40 [历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2013-10-09 标题Android AcousticEchoCanceler使用笔记分类编程 / android 标签android·ec·AcousticEchoCancelerAndroid AcousticEchoCanceler使用笔记AcousticEchoCanceler 使用方法1. 检查设备是否支持 AEC2. 初始化并启用 AEC3. 启用 / 禁用 AEC4. 释放 AEC上层调用方式AudioRecord AudioTrack1. 初始化 AudioRecord 时处理音频源2. 获取 sessionId3. 初始化 AudioTrack 时绑定相同 sessionId总结Android 在4.1API level 16新增了AcousticEchoCancelerAPI继承自 AudioEffect可快速实现 VOIP 场景下的回声消除。官方文档AcousticEchoCancelerAcousticEchoCanceler 使用方法1. 检查设备是否支持 AEC注意此检查结果不一定准确需结合实际机型测试。publicstaticbooleanisDeviceSupport(){returnAcousticEchoCanceler.isAvailable();}2. 初始化并启用 AECprivateAcousticEchoCancelercanceler;publicbooleaninitAEC(intaudioSession){if(canceler!null){returnfalse;}cancelerAcousticEchoCanceler.create(audioSession);canceler.setEnabled(true);returncanceler.getEnabled();}3. 启用 / 禁用 AECpublicbooleansetAECEnabled(booleanenable){if(nullcanceler){returnfalse;}canceler.setEnabled(enable);returncanceler.getEnabled();}4. 释放 AECpublicbooleanrelease(){if(nullcanceler){returnfalse;}canceler.setEnabled(false);canceler.release();returntrue;}上层调用方式AudioRecord AudioTrackAcousticEchoCanceler 初始化需要audioSessionId以下是上层的配合方式。1. 初始化 AudioRecord 时处理音频源if(chkNewDev()){audioRecordnewAudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION,frequency,channelIN,audioEncoding,tmpSize);}else{audioRecordnewAudioRecord(MediaRecorder.AudioSource.MIC,frequency,channelIN,audioEncoding,tmpSize);}2. 获取 sessionIdaudioRecord.getAudioSessionId()3. 初始化 AudioTrack 时绑定相同 sessionIdif(chkNewDev()audioRecord!null){audioTracknewAudioTrack(AudioManager.STREAM_VOICE_CALL,frequency,channelOUT,audioEncoding,tmpSize,AudioTrack.MODE_STREAM,audioRecord.getAudioSessionId());}else{audioTracknewAudioTrack(AudioManager.STREAM_VOICE_CALL,frequency,channelOUT,audioEncoding,tmpSize,AudioTrack.MODE_STREAM);}版本检查工具方法publicstaticbooleanchkNewDev(){returnandroid.os.Build.VERSION.SDK_INT16;}所需权限uses-permissionandroid:nameandroid.permission.RECORD_AUDIO/总结AcousticEchoCanceler可快速实现 VOIP 回声消除但各机型适配参差不齐建议同时准备第三方方案如 WebRTC AEC/AECM、Speex。上述代码基于官方文档编写资料较少不保证完整正确性。