Android Audio - 支持多個APK同時錄音
原理說明
-
在 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 類有一些變量的變化, 所以適配起來問題不大
[適用環境]:
在特定的產品需求下, 常駐後臺錄音進程(思必馳, 訊飛, 百度, 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]>