From 4c5716902052ac899547c1ef56f81d9c43302552 Mon Sep 17 00:00:00 2001 From: wangdongyusky Date: Wed, 10 Sep 2025 15:21:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E6=9C=BA=E7=BF=BB=E8=BD=AC=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangdongyusky --- .../src/camera_dialog_connection.cpp | 1 + .../camera_service/src/hcamera_device.cpp | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/services/camera_service/src/camera_dialog_connection.cpp b/services/camera_service/src/camera_dialog_connection.cpp index efb08bafa..9ccead871 100644 --- a/services/camera_service/src/camera_dialog_connection.cpp +++ b/services/camera_service/src/camera_dialog_connection.cpp @@ -39,6 +39,7 @@ void NoFrontCameraAbilityConnection::OnAbilityConnectDone(const AppExecFwk::Elem data.WriteString16(u"parameters"); nlohmann::json param; param["ability.want.params.uiExtensionType"] = "sysDialog/common"; + param["focusState"] = 0; std::string paramStr = param.dump(); data.WriteString16(Str8ToStr16(paramStr)); int32_t sendRequestRet = remoteObject->SendRequest(IAbilityConnection::ON_ABILITY_CONNECT_DONE, diff --git a/services/camera_service/src/hcamera_device.cpp b/services/camera_service/src/hcamera_device.cpp index c9a40bec4..020efe2b3 100644 --- a/services/camera_service/src/hcamera_device.cpp +++ b/services/camera_service/src/hcamera_device.cpp @@ -126,9 +126,27 @@ public: void OnFoldStatusChanged(FoldStatusRosen foldStatus) override { FoldStatusRosen currentFoldStatus = foldStatus; + auto foldScreenType = system::GetParameter("const.window.foldscreen.type", ""); + CHECK_EXECUTE(currentFoldStatus == FoldStatusRosen::HALF_FOLD && foldScreenType[0] != '6', + currentFoldStatus = FoldStatusRosen::EXPAND); CHECK_RETURN_ELOG((cameraHostManager_ == nullptr || mLastFoldStatus == currentFoldStatus || cameraDevice_ == nullptr), "no need set fold status"); cameraDevice_->UpdateCameraRotateAngle(); + if (foldScreenType[0] == '6' && + ((currentFoldStatus == FoldStatusRosen::HALF_FOLD && mLastFoldStatus == FoldStatusRosen::FOLDED) || + (currentFoldStatus == FoldStatusRosen::EXPAND && + mLastFoldStatus == FoldStatusRosen::FOLD_STATE_EXPAND_WITH_SECOND_HALF_FOLDED))) { + position = cameraDevice_->GetCameraPosition(); + } + MEDIA_INFO_LOG("HCameraDevice::OnFoldStatusChanged %{public}s, %{public}d, %{public}d, %{public}d,", + foldScreenType.c_str(), position, mLastFoldStatus, currentFoldStatus); + if (foldScreenType[0] == '6' && position == OHOS_CAMERA_POSITION_FRONT && + ((currentFoldStatus == FoldStatusRosen::EXPAND && mLastFoldStatus == FoldStatusRosen::HALF_FOLD) || + (currentFoldStatus == FoldStatusRosen::EXPAND && + mLastFoldStatus == FoldStatusRosen::FOLD_STATE_EXPAND_WITH_SECOND_HALF_FOLDED))) { + MEDIA_DEBUG_LOG("HCameraDevice::OnFoldStatusChanged dialog start"); + NoFrontCameraDialog::GetInstance()->ShowCameraDialog(); + } mLastFoldStatus = currentFoldStatus; MEDIA_INFO_LOG("OnFoldStatusChanged, foldStatus: %{public}d", foldStatus); cameraHostManager_->NotifyDeviceStateChangeInfo(DeviceType::FOLD_TYPE, (int)currentFoldStatus); @@ -137,7 +155,8 @@ private: sptr cameraDevice_; sptr cameraHostManager_; std::string cameraId_; - FoldStatusRosen mLastFoldStatus = FoldStatusRosen::UNKNOWN; + FoldStatusRosen mLastFoldStatus = OHOS::Rosen::DisplayManager::GetInstance().GetFoldStatus(); + int32_t position = OHOS_CAMERA_POSITION_BACK; }; HCameraDevice::HCameraDevice( -- Gitee