From 9d0012da30db3058d175279aadf67b5658b27162 Mon Sep 17 00:00:00 2001 From: yangdingyu1 Date: Thu, 26 Sep 2024 02:24:11 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B6=85=E7=BA=A7=E9=9A=90?= =?UTF-8?q?=E7=A7=81=EF=BC=88mute=20camera=EF=BC=89=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=9C=A8=E5=A4=9A=E8=AE=BE=E5=A4=87=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E5=9C=BA=E6=99=AF=E5=8F=AA=E8=83=BD=E5=B0=86=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=BF=80=E6=B4=BB=E7=9A=84devices=E6=BF=80?= =?UTF-8?q?=E6=B4=BB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yangdingyu1 --- .../include/hcamera_device_manager.h | 2 + .../src/hcamera_device_manager.cpp | 5 +++ .../camera_service/src/hcamera_service.cpp | 44 ++++++++++--------- 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/services/camera_service/include/hcamera_device_manager.h b/services/camera_service/include/hcamera_device_manager.h index 4a0dd76a8..805c0751d 100644 --- a/services/camera_service/include/hcamera_device_manager.h +++ b/services/camera_service/include/hcamera_device_manager.h @@ -220,6 +220,8 @@ public: */ pid_t GetActiveClient(); + std::vector> GetActiveCameraHolders(); + void SetStateOfACamera(std::string cameraId, int32_t state); void SetPeerCallback(sptr& callback); diff --git a/services/camera_service/src/hcamera_device_manager.cpp b/services/camera_service/src/hcamera_device_manager.cpp index eaf84f8ee..1f427527e 100644 --- a/services/camera_service/src/hcamera_device_manager.cpp +++ b/services/camera_service/src/hcamera_device_manager.cpp @@ -135,6 +135,11 @@ pid_t HCameraDeviceManager::GetActiveClient() return activeClientPid; } +std::vector> HCameraDeviceManager::GetActiveCameraHolders() +{ + return activeCameras_; +} + void HCameraDeviceManager::SetStateOfACamera(std::string cameraId, int32_t state) { MEDIA_INFO_LOG("HCameraDeviceManager::SetStateOfACamera start %{public}s, state: %{public}d", diff --git a/services/camera_service/src/hcamera_service.cpp b/services/camera_service/src/hcamera_service.cpp index 20aa6866d..a045207cc 100644 --- a/services/camera_service/src/hcamera_service.cpp +++ b/services/camera_service/src/hcamera_service.cpp @@ -1012,8 +1012,8 @@ int32_t HCameraService::MuteCameraFunc(bool muteMode) int32_t ret = CAMERA_OK; bool currentMuteMode = muteModeStored_; sptr deviceManager = HCameraDeviceManager::GetInstance(); - pid_t activeClient = deviceManager->GetActiveClient(); - if (activeClient == -1) { + std::vector> deviceHolderVector = deviceManager->GetActiveCameraHolders(); + if (deviceHolderVector.size() == 0) { OnMute(muteMode); int32_t retCode = SetMuteModeByDataShareHelper(muteMode); muteModeStored_ = muteMode; @@ -1023,28 +1023,30 @@ int32_t HCameraService::MuteCameraFunc(bool muteMode) } return retCode; } - sptr activeDevice = deviceManager->GetCameraByPid(activeClient); - if (activeDevice != nullptr) { - string cameraId = activeDevice->GetCameraId(); - CHECK_ERROR_RETURN_RET_LOG(!IsCameraMuteSupported(cameraId), CAMERA_UNSUPPORTED, - "Not Supported Mute,cameraId: %{public}s", cameraId.c_str()); + for (sptr activeDeviceHolder : deviceHolderVector) { + sptr activeDevice = activeDeviceHolder->GetDevice(); if (activeDevice != nullptr) { - ret = UpdateMuteSetting(activeDevice, muteMode); + string cameraId = activeDevice->GetCameraId(); + CHECK_ERROR_RETURN_RET_LOG(!IsCameraMuteSupported(cameraId), CAMERA_UNSUPPORTED, + "Not Supported Mute,cameraId: %{public}s", cameraId.c_str()); + if (activeDevice != nullptr) { + ret = UpdateMuteSetting(activeDevice, muteMode); + } + if (ret != CAMERA_OK) { + MEDIA_ERR_LOG("UpdateMuteSetting Failed, cameraId: %{public}s", cameraId.c_str()); + muteModeStored_ = currentMuteMode; + } } - if (ret != CAMERA_OK) { - MEDIA_ERR_LOG("UpdateMuteSetting Failed, cameraId: %{public}s", cameraId.c_str()); - muteModeStored_ = currentMuteMode; + if (ret == CAMERA_OK) { + OnMute(muteMode); + } + if (activeDevice != nullptr) { + activeDevice->SetDeviceMuteMode(muteMode); + } + ret = SetMuteModeByDataShareHelper(muteMode); + if (ret == CAMERA_OK) { + muteModeStored_ = muteMode; } - } - if (ret == CAMERA_OK) { - OnMute(muteMode); - } - if (activeDevice != nullptr) { - activeDevice->SetDeviceMuteMode(muteMode); - } - ret = SetMuteModeByDataShareHelper(muteMode); - if (ret == CAMERA_OK) { - muteModeStored_ = muteMode; } return ret; } -- Gitee