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 1d6bc46069f81cdea380a0233dd940e508ee0ae7..3c92a6a4176ea92b0a741a509a28a597767434ba 100644 --- a/services/audio_policy/server/src/service/audio_policy_service.cpp +++ b/services/audio_policy/server/src/service/audio_policy_service.cpp @@ -3881,6 +3881,19 @@ void AudioPolicyService::OnDeviceStatusUpdated(DeviceType devType, bool isConnec UpdateConnectedDevicesWhenConnecting(updatedDesc, descForCb); reason = AudioStreamDeviceChangeReason::NEW_DEVICE_AVAILABLE; +#ifdef BLUETOOTH_ENABLE + if (updatedDesc.connectState_ == CONNECTED && + updatedDesc.deviceType_ == DEVICE_TYPE_BLUETOOTH_SCO) { + AudioRendererInfo rendererInfo = {}; + rendererInfo.streamUsage = STREAM_USAGE_VOICE_COMMUNICATION; + std::vector> preferredDeviceList = + GetPreferredOutputDeviceDescriptors(rendererInfo); + if (preferredDeviceList.size() > 0 && + preferredDeviceList[0]->deviceType_ == DEVICE_TYPE_BLUETOOTH_SCO) { + Bluetooth::AudioHfpManager::SetActiveHfpDevice(preferredDeviceList[0]->macAddress_); + } + } +#endif } else { UpdateConnectedDevicesWhenDisconnecting(updatedDesc, descForCb); reason = AudioStreamDeviceChangeReason::OLD_DEVICE_UNAVALIABLE;