增加休眠
authorxue <2144439972@qq.com>
Tue, 18 Nov 2025 07:45:53 +0000 (15:45 +0800)
committerxue <2144439972@qq.com>
Tue, 18 Nov 2025 07:45:53 +0000 (15:45 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/zhihui/websocket/os_ws/haisi_websocket.c

index 0b613ba..e6f8393 100644 (file)
@@ -47,17 +47,39 @@ namespace OHOS
     static bool g_lastPlayed = false;
 
     static ThunderBirdShutdownView *g_pThunderBirdShutdownView{nullptr};
+    
+    // 时间线是否已获取标志
+    static bool g_timelineReceived = false;  // 时间线是否已获取
+    
     static void ScreenStatusNotify(ScreenStatus status)
     {
-        if (g_videoPlay == nullptr)
-        {
-            return;
-        }
+        // if (g_videoPlay == nullptr)
+        // {
+        //     return;
+        // }
 
         bool temp = g_videoPlay->isPlayed_;
-        if (status == SCREEN_STATUS_OFF && g_videoPlay->isPlayed_)
+        if (status == SCREEN_STATUS_OFF)
         {
-            g_videoPlay->PauseVideoPlay();
+            // 立即执行视频暂停操作
+            
+                if(g_videoPlay->isPlayed_)
+                {
+                    g_videoPlay->PauseVideoPlay();
+                }
+            
+            // 检测是否在联网成功到获取时间线完成这个阶段
+            ThunderBirdModel *model = ThunderBirdModel::GetInstance();
+            bool hasNetwork = (model != nullptr) ? model->HasNetwork() : false;
+            
+            // 如果联网成功但时间线未获取,不休眠
+            if (hasNetwork && !g_timelineReceived) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenStatusNotify: 联网成功但时间线未获取,不休眠");
+                return;
+            }
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenStatusNotify: 联网成功且时间线已获取,执行休眠");
+            // 立即执行休眠操作
+            ln_ws_enter_sleep();
         }
         else if (status == SCREEN_STATUS_ON)
         {
@@ -65,9 +87,11 @@ namespace OHOS
             {
                 g_videoPlay->ResumeVideoPlay();
             }
+            ln_ws_exit_sleep();
         }
         g_lastPlayed = temp;
     }
+    
     static ThunderBirdMainView *g_pThunderBirdMainView{nullptr};
 
     ThunderBirdMainView::ThunderBirdMainView()
@@ -80,6 +104,9 @@ namespace OHOS
         
         // 初始化当前视频路径为空
         currentVideoPath_ = "";
+        
+        // 初始化时间线标志为false(开机时时间线未获取)
+        g_timelineReceived = false;
     }
 
     ThunderBirdMainView::~ThunderBirdMainView()
@@ -92,6 +119,7 @@ namespace OHOS
             delete ScrollView_;
             ScrollView_ = nullptr;
         }
+        
         g_pThunderBirdMainView = nullptr;
         //ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮
         ThunderBirdModel::GetInstance()->StopTimeDisplayTimer();
@@ -102,6 +130,12 @@ namespace OHOS
     {
         return g_pThunderBirdMainView;
     }
+    
+    void ThunderBirdMainView::SetTimelineReceived(bool received)
+    {
+        g_timelineReceived = received;
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::SetTimelineReceived: %d", received);
+    }
 
     void ThunderBirdMainView::DeInit()
     {
index dcbdebe..e5972a1 100644 (file)
             m_networkStatusChanged = true;
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Network status changed: previous=%d, current=%d, hasNetwork=%d", 
                          previousNetworkStatus, m_networkStatus, m_hasNetwork);
+            
+            // 如果网络断开,重置时间线标志,确保下次联网时能正确工作
+            if (!m_hasNetwork) {
+                ThunderBirdMainView::SetTimelineReceived(false);
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Network disconnected, reset timeline received flag");
+            }
         }
         
         // 记录网络状态更新日志
             SetCurrentStatusText(description);
             SetCurrentExpression(emotion);
             SetCurrentExpressionAndStatus(); //更新当前表情和状态文本
+            
+            // 标记时间线已获取,允许休眠
+            ThunderBirdMainView::SetTimelineReceived(true);
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleTimelineStatusChange: 时间线已获取,允许休眠");
         }
     }
     
index 9298527..6237df6 100644 (file)
@@ -259,7 +259,7 @@ static void uapi_ws_on_close(int client)
     // 在断开回调触发时,将关闭状态设置为成功
  
     HAISI_WS_INFO("WebSocket close callback triggered, status set to SUCCESS (%d)\n", g_ws_close_status);
-    
+    if(g_ws_connected!=WS_STATE_SLEEP)
     g_ws_connected = WS_STATE_DISCONNECTED;
     HAISI_WS_DEBUG("连接状态: 未连接\n");
     
@@ -961,7 +961,8 @@ int uapi_ws_enter_sleep(void)
     HAISI_WS_WARN("WebSocket service not running, cannot enter sleep\n");
     return -1;
     }
-    
+    g_ws_connected = WS_STATE_SLEEP;
+    HAISI_WS_INFO("Sleep mode activated, all operations paused\n");
     // 如果当前有连接,先断开
     if (g_ws_client_fd >= 0) {
         HAISI_WS_DEBUG("Disconnecting before entering sleep mode\n");
@@ -969,8 +970,7 @@ int uapi_ws_enter_sleep(void)
             }
     
     // 设置状态为休眠
-    g_ws_connected = WS_STATE_SLEEP;
-    HAISI_WS_INFO("Sleep mode activated, all operations paused\n");
+   
     
     return 0;
 }