From 13271f5b0f960ec858aef5ecb387471fb71d3c00 Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Tue, 18 Nov 2025 15:45:53 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E4=BC=91=E7=9C=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../thunderbird/src/ThunderBirdMainView.cpp | 46 ++++++++++++++++--- .../thunderbird/src/ThunderBirdModel.cpp | 10 ++++ .../zhihui/websocket/os_ws/haisi_websocket.c | 8 ++-- 3 files changed, 54 insertions(+), 10 deletions(-) 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 0b613ba51..e6f839368 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 @@ -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() { 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 dcbdebe38..e5972a127 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 @@ -1853,6 +1853,12 @@ 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"); + } } // 记录网络状态更新日志 @@ -2733,6 +2739,10 @@ SetCurrentStatusText(description); SetCurrentExpression(emotion); SetCurrentExpressionAndStatus(); //更新当前表情和状态文本 + + // 标记时间线已获取,允许休眠 + ThunderBirdMainView::SetTimelineReceived(true); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleTimelineStatusChange: 时间线已获取,允许休眠"); } } diff --git a/code/sdk/zhihui/websocket/os_ws/haisi_websocket.c b/code/sdk/zhihui/websocket/os_ws/haisi_websocket.c index 929852725..6237df6dc 100644 --- a/code/sdk/zhihui/websocket/os_ws/haisi_websocket.c +++ b/code/sdk/zhihui/websocket/os_ws/haisi_websocket.c @@ -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; } -- 2.17.1