diff --git a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp index 2537820324e6684af930a1d5c84aaf26095707de..244843c365d3045d9a0e59e56619c62817ae4b0b 100644 --- a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp @@ -2070,7 +2070,10 @@ int32_t AudioCoreService::SetDefaultOutputDevice(const DeviceType deviceType, co streamCollector_.GetCurrentRendererChangeInfos(audioRendererChangeInfos); bool forceFetch = false; for (auto &changeInfo : audioRendererChangeInfos) { - if (changeInfo->sessionId == static_cast(sessionID)) { + if (changeInfo->sessionId == static_cast(sessionID) && + (changeInfo->rendererInfo.streamUsage == STREAM_USAGE_VOICE_COMMUNICATION || + changeInfo->rendererInfo.streamUsage == STREAM_USAGE_VIDEO_COMMUNICATION || + changeInfo->rendererInfo.streamUsage == STREAM_USAGE_VOICE_MODEM_COMMUNICATION)) { CHECK_AND_CONTINUE(!skipForce); AudioPolicyUtils::GetInstance().SetPreferredDevice(AUDIO_CALL_RENDER, std::make_shared(), changeInfo->clientUID, "SetDefaultOutputDevice");