diff --git a/services/audio_policy/server/include/service/audio_policy_service.h b/services/audio_policy/server/include/service/audio_policy_service.h index 050c1033cf7c5326e11be5ab00f63b05b8d2d42a..1732c4c3fc282bb8d094b1fda1b67edc85eac03b 100644 --- a/services/audio_policy/server/include/service/audio_policy_service.h +++ b/services/audio_policy/server/include/service/audio_policy_service.h @@ -595,6 +595,8 @@ private: void FetchOutputDeviceWhenNoRunningStream(); + void FetchInputDeviceWhenNoRunningStream(); + bool interruptEnabled_ = true; bool isUpdateRouteSupported_ = true; bool isCurrentRemoteRenderer = false; diff --git a/services/audio_policy/server/src/service/audio_policy_service.cpp b/services/audio_policy/server/src/service/audio_policy_service.cpp index f856c9605cb41050b7868bc877053b4a5ab23bc9..17e80d26d29babb21e10fa3c135237c9d28e91e3 100644 --- a/services/audio_policy/server/src/service/audio_policy_service.cpp +++ b/services/audio_policy/server/src/service/audio_policy_service.cpp @@ -1372,6 +1372,18 @@ void AudioPolicyService::FetchOutputDeviceWhenNoRunningStream() OnPreferredOutputDeviceUpdated(currentActiveDevice_); } +void AudioPolicyService::FetchInputDeviceWhenNoRunningStream() +{ + AUDIO_INFO_LOG("fetch input device when no running stream"); + unique_ptr desc = audioRouterCenter_.FetchInputDevice(SOURCE_TYPE_MIC, -1); + if (desc->deviceType_ == DEVICE_TYPE_NONE || desc->deviceType_ == currentActiveInputDevice_.deviceType_) { + return; + } + currentActiveInputDevice_ = AudioDeviceDescriptor(*desc); + AUDIO_INFO_LOG("currentActiveInputDevice update %{public}d", currentActiveInputDevice_.deviceType_); + OnPreferredInputDeviceUpdated(currentActiveInputDevice_.deviceType_, currentActiveInputDevice_.networkId_); +} + void AudioPolicyService::FetchOutputDevice(vector> &rendererChangeInfos, bool isStreamStatusUpdated = false) { @@ -1464,6 +1476,8 @@ void AudioPolicyService::FetchInputDevice(vector