修改方法
源码路径: 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修改方法