基于Android N 7.1多应用同时录音
/frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
audio_io_handle_t AudioPolicyManager::getInputForDevice(audio_devices_t device,
String8 address,
audio_session_t session,
uid_t uid,
audio_source_t inputSource,
uint32_t samplingRate,
audio_format_t format,
audio_channel_mask_t channelMask,audio_input_flags_t flags,
AudioMix *policyMix)
{
...
//解开这段代码即可
// TODO enable input reuse
#if 0
// reuse an open input if possible
for (size_t i = 0; i < mInputs.size(); i++) {
sp<AudioInputDescriptor> desc = mInputs.valueAt(i);
// reuse input if it shares the same profile and same sound trigger attribute
if (profile == desc->mProfile &&
isSoundTrigger == desc->isSoundTrigger()) {
sp<AudioSession> as = desc->getAudioSession(session);
if (as != 0) {
// do not allow unmatching properties on same session
if (as->matches(audioSession)) {
as->changeOpenCount(1);
} else {
ALOGW("getInputForDevice() record with different attributes" " exists for session %d", session);
return input;
}
} else {
desc->addAudioSession(session, audioSession);
}
ALOGV("getInputForDevice() reusing input %d", mInputs.keyAt(i));
return mInputs.keyAt(i);
}
}
#endif
...
}
其它Android(4.4,/4.1/5.1/8.1)等版本参考:
https://blog.csdn.net/qq_33443989/article/details/84232061