尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【2013-10-09】Android AcousticEchoCanceler使用笔记

【2013-10-09】Android AcousticEchoCanceler使用笔记
📅 发布时间:2026/6/25 20:13:10

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2013-10-09| 标题:Android AcousticEchoCanceler使用笔记|分类:编程 / android |标签:android·ec·AcousticEchoCanceler


Android AcousticEchoCanceler使用笔记

    • AcousticEchoCanceler 使用方法
      • 1. 检查设备是否支持 AEC
      • 2. 初始化并启用 AEC
      • 3. 启用 / 禁用 AEC
      • 4. 释放 AEC
    • 上层调用方式(AudioRecord + AudioTrack)
      • 1. 初始化 AudioRecord 时处理音频源
      • 2. 获取 sessionId
      • 3. 初始化 AudioTrack 时绑定相同 sessionId
    • 总结

Android 在4.1(API level 16)新增了AcousticEchoCancelerAPI,继承自 AudioEffect,可快速实现 VOIP 场景下的回声消除。

官方文档:AcousticEchoCanceler

AcousticEchoCanceler 使用方法

1. 检查设备是否支持 AEC

注意:此检查结果不一定准确,需结合实际机型测试。

publicstaticbooleanisDeviceSupport(){returnAcousticEchoCanceler.isAvailable();}

2. 初始化并启用 AEC

privateAcousticEchoCancelercanceler;publicbooleaninitAEC(intaudioSession){if(canceler!=null){returnfalse;}canceler=AcousticEchoCanceler.create(audioSession);canceler.setEnabled(true);returncanceler.getEnabled();}

3. 启用 / 禁用 AEC

publicbooleansetAECEnabled(booleanenable){if(null==canceler){returnfalse;}canceler.setEnabled(enable);returncanceler.getEnabled();}

4. 释放 AEC

publicbooleanrelease(){if(null==canceler){returnfalse;}canceler.setEnabled(false);canceler.release();returntrue;}

上层调用方式(AudioRecord + AudioTrack)

AcousticEchoCanceler 初始化需要audioSessionId,以下是上层的配合方式。

1. 初始化 AudioRecord 时处理音频源

if(chkNewDev()){audioRecord=newAudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION,frequency,channelIN,audioEncoding,tmpSize);}else{audioRecord=newAudioRecord(MediaRecorder.AudioSource.MIC,frequency,channelIN,audioEncoding,tmpSize);}

2. 获取 sessionId

audioRecord.getAudioSessionId()

3. 初始化 AudioTrack 时绑定相同 sessionId

if(chkNewDev()&&audioRecord!=null){audioTrack=newAudioTrack(AudioManager.STREAM_VOICE_CALL,frequency,channelOUT,audioEncoding,tmpSize,AudioTrack.MODE_STREAM,audioRecord.getAudioSessionId());}else{audioTrack=newAudioTrack(AudioManager.STREAM_VOICE_CALL,frequency,channelOUT,audioEncoding,tmpSize,AudioTrack.MODE_STREAM);}

版本检查工具方法:

publicstaticbooleanchkNewDev(){returnandroid.os.Build.VERSION.SDK_INT>=16;}

所需权限:

<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>

总结

  1. AcousticEchoCanceler可快速实现 VOIP 回声消除,但各机型适配参差不齐,建议同时准备第三方方案(如 WebRTC AEC/AECM、Speex)。
  2. 上述代码基于官方文档编写,资料较少,不保证完整正确性。

相关新闻

  • 3步AI智能修复:让受损音频重获清晰的专业级解决方案
  • 游戏漏洞挖掘 | 网络安全教程:新手手游漏洞挖掘流程与实战案例详解
  • lxml:Python 处理 XML 和 HTML 的终极选择

最新新闻

  • 按BGM筛选素材做歌的软件,主流Beat与Sample素材创作工具实操分享
  • window 用户迁移 ssh 获取代码报错
  • CGMY模型下ATM期权定价的高阶渐近展开:从Laplace积分到漂移-二项式结构
  • 从RuoYi框架SQL注入漏洞剖析企业级应用安全防护
  • 3分钟搞定微信语音备份:让Silk音频文件不再成为你的数字记忆障碍
  • 2026年,这家口碑超棒的永康别墅门老牌源头厂家凭啥这么火?

日新闻

  • 利用微PE工具箱进行系统安装教程
  • 渗透测试十大核心工具实战指南:从信息搜集到报告生成全流程解析
  • 暗黑破坏神2存档编辑器:网页版角色修改工具完全指南

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号