From: xue <2144439972@qq.com> Date: Mon, 29 Sep 2025 07:54:28 +0000 (+0800) Subject: 增加屏保功能 X-Git-Tag: V1.0.9_20251128_194606_LN~250^2~25^2~2^2~6 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=39ccac37ab87357e5d92fc9a71c97ca192a25434;p=mirrors%2FFD230.git 增加屏保功能 --- diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp index b1446178c..25f3f4850 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp @@ -28,7 +28,7 @@ #include "battery_service.h" #include "custom_runtime.h" #include -//#include "ln_api.h" +#include "ln_api.h" namespace OHOS { static constexpr int16_t VIDEO_WIDTH = 360; @@ -277,7 +277,7 @@ namespace OHOS iconView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); iconView->SetResizeMode(UIImageView::COVER); iconView->SetSrc("/user/res/1.bin"); - iconView->SetVisible(false); + //iconView->SetVisible(false); ScrollView_->Add(iconView); backGroundView = new UIImageView(); //(黑色遮罩)需要遮罩时启用,预先增加在对应图层 @@ -285,7 +285,7 @@ namespace OHOS backGroundView->SetPosition(0, 0, 360, 360); backGroundView->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); backGroundView->SetStyle(STYLE_BACKGROUND_OPA, 0xD0); - backGroundView->SetVisible(false); + //backGroundView->SetVisible(false); ScrollView_->Add(backGroundView); // 默认显示主界面 @@ -548,7 +548,10 @@ namespace OHOS group[hideView]->SetVisible(false); } // 同用遮罩,部分界面在内部自行开启,其余界面关闭 - iconView->SetVisible(false); + if(GetIsOpenScreenImageModel() == false) + { + iconView->SetVisible(false); + } backGroundView->SetVisible(false); if(showView != THUNDERBIRD_DIALOGUEVIEW && showView != THUNDERBIRD_LULLABYVIEW) { @@ -566,12 +569,7 @@ namespace OHOS ClickFunc(showView); group[showView]->SetVisible(true); group[showView]->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - // 关键:把状态栏重新加到末尾,确保最上层 - if (group1) - { - ScrollView_->Remove(group1); - ScrollView_->Add(group1); - } + // 进入大界面后,根据 subView 跳转到其子界面 if (subView != -1) { @@ -632,6 +630,29 @@ namespace OHOS return currentSubView_; } + // 跳转到上一个界面 + bool ThunderBirdMainView::GoBackToPreviousView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::GoBackToPreviousView"); + + // 检查是否有上一个界面可以返回 + if (prevView_ == -1 || prevView_ >= MAXVIEW) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::GoBackToPreviousView: No previous view to return to"); + return false; + } + + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::GoBackToPreviousView: prevView_=%d, prevSubView_=%d, currentView_=%d, currentSubView_=%d", + prevView_, prevSubView_, currentView_, currentSubView_); + + + // 跳转到上一个界面 + ChangeView(currentView_, prevView_, prevSubView_); + + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::GoBackToPreviousView: Successfully returned to previous view"); + return true; + } + void ThunderBirdMainView::Initback() { curFace = new UIImageView(); @@ -700,6 +721,63 @@ namespace OHOS curFace->SetSrc(hairPath); curFace->Invalidate(); } + + //获取是否开启屏保模式 + bool ThunderBirdMainView::GetIsOpenScreenImageModel(void) + { + return IsOpenScreenImageModel_; + } + //切换屏保图片的接口 + void ThunderBirdMainView::SwitchIconImage(const char *imagePath) + { + if (iconView == nullptr || imagePath == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::SwitchIconImage: Invalid parameters"); + return; + } + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::SwitchIconImage: Switching to image: %s", imagePath); + iconView->SetSrc(imagePath); + iconView->Invalidate(); + } + //切换屏保模式接口 + bool ThunderBirdMainView::OpenScreenImageModel(void) + { + if(GetIsOpenScreenImageModel()==true) + { + return false; + } + IsOpenScreenImageModel_ = true; + //暂停视频播放 + if (videoPlay_ != nullptr) { + videoPlay_->PauseVideoPlay(); + } + //切换屏保图片 + SwitchIconImage(LN_DEVICE_SCREEN_IMAGE_FILE); + //设置iconView为可见状态 + if (iconView != nullptr) { + iconView->SetVisible(true); + } + return true; + } + //关闭屏保模式接口 + bool ThunderBirdMainView::CloseScreenImageModel(void) + { + if(GetIsOpenScreenImageModel()==false) + { + return false; + } + IsOpenScreenImageModel_ = false; + //恢复视频播放 + if (videoPlay_ != nullptr) { + videoPlay_->ResumeVideoPlay(); + } + //恢复默认屏保图片 + SwitchIconImage("/user/res/1.bin"); + //设置iconView可见状态恢复跟着backGroundViewèµ° + if (backGroundView->IsVisible() == false) { + iconView->SetVisible(false); + } + return true; + } UIViewGroup *ThunderBirdMainView::InitBaseData() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitBaseData"); diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp index a70c731ff..d52343941 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp @@ -1684,6 +1684,29 @@ } } } + //切换屏保图片 + void ThunderBirdModel::HandleScreenImageDownloadSuccess() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleScreenImageDownloadSuccess"); + uapi_set_screen_on_api(); // 亮屏 + //启用屏保图片 + if (access(LN_DEVICE_SCREEN_IMAGE_FILE, F_OK) != -1) + { + ThunderBirdMainView::GetInstance()->OpenScreenImageModel(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "屏保图片存在,直接发送切换屏保通知"); + } + } + + void ThunderBirdModel::HandleApiError(const char* message) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleApiError"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error message: %s", message ? message : "null"); + int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); + ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_ADJUSTVIEW, ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_WARNING); + if (ThunderBirdAdjustView::GetInstance()) { + ThunderBirdAdjustView::GetInstance()->UpdateTaskReminderText(message); + } + } //减低视频帧率 开启对话调用开启 void ThunderBirdModel::LowFrequence()