修复屏保会跳变的bug
authorxue <2144439972@qq.com>
Tue, 23 Dec 2025 03:31:28 +0000 (11:31 +0800)
committerxue <2144439972@qq.com>
Tue, 23 Dec 2025 03:31:28 +0000 (11:31 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp

index a239a2c..165e64d 100644 (file)
@@ -86,6 +86,13 @@ namespace OHOS
         else if (status == SCREEN_STATUS_ON)
         {
             // 亮屏时恢复视频播放
+            // 先检查屏保模式,如果屏保开启,不恢复视频播放
+            if (ThunderBirdMainView::GetInstance() && ThunderBirdMainView::GetInstance()->GetIsOpenScreenImageModel())
+            {
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScreenStatusNotify: 屏保模式已开启,跳过视频恢复");
+                return;
+            }
+            
             // 检查视频播放器是否已进入且之前正在播放
             if (g_videoPlay->isEntered_)
             {
@@ -454,6 +461,12 @@ namespace OHOS
 
     bool ThunderBirdMainView::SwitchVideo(const char *uri) // 切换表情接口
     {
+        //如果屏保模式开启,则不切换视频
+        if(GetIsOpenScreenImageModel() == true)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::SwitchVideo: Screen image model is open, skipping video switch");
+            return true;
+        }
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::SwitchVideo: Switching to video: %s", uri ? uri : "null");
         
         if (uri == nullptr || surfaceView_ == nullptr)
@@ -961,9 +974,18 @@ namespace OHOS
         }
         if(hideView == THUNDERBIRD_BLUEVIEW && showView != THUNDERBIRD_BLUEVIEW)
         {
+            // 退出蓝牙界面时恢复视频播放,但需要先检查屏保模式
             if(videoPlay_ != nullptr && videoPlay_->isPause_)
             {
-                videoPlay_->ResumeVideoPlay();
+                // 如果屏保模式已开启,不恢复视频播放
+                if (!GetIsOpenScreenImageModel())
+                {
+                    videoPlay_->ResumeVideoPlay();
+                }
+                else
+                {
+                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::ChangeView: 屏保模式已开启,跳过视频恢复");
+                }
             }
             InvalidateGroup1(false);
         }
@@ -1184,14 +1206,22 @@ namespace OHOS
         if (videoPlay_->isExited_ || !videoPlay_->isEntered_)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::Initback videoPlay_->StartVideoPlay");
-            // 添加状态检查,避免重复启动
-            if (!videoPlay_->isPlayed_) {
-                int32_t ret = videoPlay_->StartVideoPlay();
-                if (ret != 0) {
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::Initback StartVideoPlay failed, ret=%d", ret);
+            // 先检查屏保模式,如果屏保开启,不启动视频播放
+            if (GetIsOpenScreenImageModel())
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::Initback: 屏保模式已开启,跳过视频启动");
+            }
+            else
+            {
+                // 添加状态检查,避免重复启动
+                if (!videoPlay_->isPlayed_) {
+                    int32_t ret = videoPlay_->StartVideoPlay();
+                    if (ret != 0) {
+                        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::Initback StartVideoPlay failed, ret=%d", ret);
+                    }
+                } else {
+                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::Initback videoPlay_ already playing, skipping StartVideoPlay");
                 }
-            } else {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::Initback videoPlay_ already playing, skipping StartVideoPlay");
             }
         }