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)
{
{
g_videoPlay->ResumeVideoPlay();
}
+ ln_ws_exit_sleep();
}
g_lastPlayed = temp;
}
+
static ThunderBirdMainView *g_pThunderBirdMainView{nullptr};
ThunderBirdMainView::ThunderBirdMainView()
// 初始化当前视频路径为空
currentVideoPath_ = "";
+
+ // 初始化时间线标志为false(开机时时间线未获取)
+ g_timelineReceived = false;
}
ThunderBirdMainView::~ThunderBirdMainView()
delete ScrollView_;
ScrollView_ = nullptr;
}
+
g_pThunderBirdMainView = nullptr;
//ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮
ThunderBirdModel::GetInstance()->StopTimeDisplayTimer();
{
return g_pThunderBirdMainView;
}
+
+ void ThunderBirdMainView::SetTimelineReceived(bool received)
+ {
+ g_timelineReceived = received;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::SetTimelineReceived: %d", received);
+ }
void ThunderBirdMainView::DeInit()
{
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: 时间线已获取,允许休眠");
}
}
// 在断开回调触发时,将关闭状态设置为成功
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");
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");
}
// 设置状态为休眠
- g_ws_connected = WS_STATE_SLEEP;
- HAISI_WS_INFO("Sleep mode activated, all operations paused\n");
+
return 0;
}