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]>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章