修改方法
源碼路徑: sdk\frameworks\av\services\audiopolicy\managerdefault\AudioPolicyManager.cpp
- 修改說明
Android9.0 的源碼裏面已經有部分邏輯支持多應用錄音, 不過被 #if 0 了.
找到註釋處,// FIXME: disable concurrent capture until UI is ready
一共有兩個地方, 參照以下修改, 兩個宏都要定義哦 Good luck 😄
#define ANDROID9_0_SUPPORT_MULIT_CHANNEL_RECORDING
#define ANDROID9_0_SUPPORT_MULIT_CODEC_RECORDING
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 81ad0a7..0b3606d 100755
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -1717,7 +1717,7 @@ audio_io_handle_t AudioPolicyManager::getInputForDevice(audio_devices_t device,
policyMix, mpClientInterface);
// FIXME: disable concurrent capture until UI is ready
-#if 0
+#ifdef ANDROID9_0_SUPPORT_MULIT_CHANNEL_RECORDING
// reuse an open input if possible
sp<AudioInputDescriptor> reusedInputDesc;
for (size_t i = 0; i < mInputs.size(); i++) {
@@ -1926,6 +1926,7 @@ status_t AudioPolicyManager::startInput(audio_io_handle_t input,
}
// FIXME: disable concurrent capture until UI is ready
+#ifndef ANDROID9_0_SUPPORT_MULIT_CODEC_RECORDING
#if 0
if (!isConcurentCaptureAllowed(inputDesc, audioSession)) {
ALOGW("startInput(%d) failed: other input already started", input);
@@ -2035,6 +2036,7 @@ status_t AudioPolicyManager::startInput(audio_io_handle_t input,
}
}
#endif
+#endif
// Make sure we start with the correct silence state
audioSession->setSilenced(silenced);
與之相關
Android Audio - 音頻子系統框架簡析
Android Audio - 支持多應用同時錄音_Android4.4修改方法
Android Audio - 支持多應用同時錄音_Android5.1 & Android6.0 修改方法
Android Audio - 支持多應用同時錄音_Android8.1修改方法