diff --git a/services/audio_policy/server/service/service_main/include/audio_policy_server.h b/services/audio_policy/server/service/service_main/include/audio_policy_server.h index acb0f7cfbcdfdf88da59d925a266bc34908b5572..02b3d809db6fa659ad66fea19e00f86013d4c24d 100644 --- a/services/audio_policy/server/service/service_main/include/audio_policy_server.h +++ b/services/audio_policy/server/service/service_main/include/audio_policy_server.h @@ -837,7 +837,7 @@ private: void UpdateDefaultOutputDeviceWhenStarting(const uint32_t sessionID); void UpdateDefaultOutputDeviceWhenStopping(const uint32_t sessionID); void ChangeVolumeOnVoiceAssistant(AudioStreamType &streamInFocus); - AudioStreamType GetCurrentStreamInFocus(); + AudioStreamType GetCurrentStreamInFocus(int32_t zoneId = 0); AudioEffectService &audioEffectService_; AudioAffinityManager &audioAffinityManager_; diff --git a/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp b/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp index 463c6936cb90291262845e60505797beaf1083ee..23848921e634231c8a429d07f8ecb3aa56883454 100644 --- a/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp @@ -713,7 +713,7 @@ int32_t AudioPolicyServer::ProcessVolumeKeyEvents(const int32_t keyType) if (volumeApplyToAll_) { streamInFocus = AudioStreamType::STREAM_ALL; } else { - streamInFocus = VolumeUtils::GetVolumeTypeFromStreamType(GetCurrentStreamInFocus()); + streamInFocus = VolumeUtils::GetVolumeTypeFromStreamType(GetCurrentStreamInFocus(zoneId)); } bool active = false; IsStreamActive(streamInFocus, active); @@ -1391,22 +1391,24 @@ int32_t AudioPolicyServer::AdjustVolumeByStep(int32_t adjustTypeIn) return ERR_PERMISSION_DENIED; } + int32_t zoneId = AudioZoneService::GetInstance().CheckZoneExist(audioVolumeManager_.GetVolumeAdjustZoneId()) ? + audioVolumeManager_.GetVolumeAdjustZoneId() : 0; AudioStreamType streamInFocus = VolumeUtils::GetVolumeTypeFromStreamType( - GetCurrentStreamInFocus()); + GetCurrentStreamInFocus(zoneId)); if (streamInFocus == AudioStreamType::STREAM_DEFAULT) { streamInFocus = AudioStreamType::STREAM_MUSIC; } std::lock_guard lock(systemVolumeMutex_); int32_t volumeLevelInInt = 0; - if (adjustType == VolumeAdjustType::VOLUME_UP && GetStreamMuteInternal(streamInFocus)) { - SetStreamMuteInternal(streamInFocus, false, false); + if (adjustType == VolumeAdjustType::VOLUME_UP && GetStreamMuteInternal(streamInFocus, zoneId)) { + SetStreamMuteInternal(streamInFocus, false, false, DEVICE_TYPE_NONE, zoneId); if (!VolumeUtils::IsPCVolumeEnable()) { AUDIO_DEBUG_LOG("phone need return"); return SUCCESS; } } - volumeLevelInInt = GetSystemVolumeLevelInternal(streamInFocus); + volumeLevelInInt = GetSystemVolumeLevelInternal(streamInFocus, zoneId); int32_t minRet = -1; GetMinVolumeLevel(streamInFocus, minRet); int32_t maxRet = -1; @@ -1427,7 +1429,7 @@ int32_t AudioPolicyServer::AdjustVolumeByStep(int32_t adjustTypeIn) volumeLevelInInt; volumeLevelInInt = volumeLevelInInt < minRet ? minRet : volumeLevelInInt; - int32_t ret = SetSystemVolumeLevelInternal(streamInFocus, volumeLevelInInt, false); + int32_t ret = SetSystemVolumeLevelInternal(streamInFocus, volumeLevelInInt, false, zoneId); return ret; } @@ -2907,10 +2909,10 @@ void AudioPolicyServer::OnAudioStreamRemoved(const uint64_t sessionID) audioPolicyServerHandler_->SendCapturerRemovedEvent(sessionID, false); } -AudioStreamType AudioPolicyServer::GetCurrentStreamInFocus() +AudioStreamType AudioPolicyServer::GetCurrentStreamInFocus(int32_t zoneId) { int32_t streamType = STREAM_DEFAULT; - GetStreamInFocus(DEFAULT_ZONEID, streamType); + GetStreamInFocus(zoneId, streamType); CHECK_AND_RETURN_RET(audioVolumeManager_.IsNeedForceControlVolumeType(), static_cast(streamType)); AUDIO_INFO_LOG("force volume type, type:%{public}d", audioVolumeManager_.GetForceControlVolumeType()); return audioVolumeManager_.GetForceControlVolumeType();