Android Audio - 支持多个APK同时录音

原理说明

Android Audio - 音频子系统框架简析

  • 在 Android4.4 上适配是最麻烦的, 整个录音框架原本就是基于单 RecordThread 线程设计的, 里面的 RecordTrack(buffer管理对象)也仅一个, 不同于Android6.0的 RecordTrack是以数组的形式管理的

  • 在 Android6.0 对比录音框架

变化如下
1.RecordTrack对象的管理
2.就是函数返回值. 无论是getInput 还是 getInputForAttr 函数主要的作用就是找到一个需求匹配的 profile文件, 然后创建一个 RecordThread 线程. 最后返回一个 audio_io_handle_t input 一个随机的整数值
  • 在 Android8.1 上 getInputForAttr 类似 Android4.4. 但是里面的 AudioInputDescriptor 类有一些变量的变化, 所以适配起来问题不大

原型AudioRecord框架

修改后AudioRecord框架
[适用环境]:

在特定的产品需求下, 常驻后台录音进程(思必驰, 讯飞, 百度, Roboo), 在启动第三方录音apk, 例如微信, QQ物联等.
可以规避:
startInput() input 18 failed: other input already started.
AudioRecord: start() status -38 报错. 正常录音.

Android4.4 修改方法

Android Audio - 支持多应用同时录音_Android4.4修改方法

Android5.1 & 6.0 修改方法

Android Audio - 支持多应用同时录音_Android5.1 & Android6.0 修改方法

Android8.1 修改方法

Android Audio - 支持多应用同时录音_Android8.1修改方法

[补充]:

在 ATM7051H_Android4.4、RK3128_Android4.4、RK3128_Android6.0、RK3126C_Android8.1上测试验证过. 请放心食用.

[补充]:

有问题可以邮件沟通 iFinelio Tower <[email protected]>

发布了53 篇原创文章 · 获赞 19 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_33443989/article/details/84232061