From d92507d2e8fd72092bde97a6cf194e274c08dd24 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=AD=99=E6=98=A5=E9=98=B3?= Date: Sat, 17 Jan 2026 12:58:53 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E6=95=85=E4=BA=8B=E6=A8=A1?= =?utf8?q?=E5=BC=8F=E6=97=A0=E6=95=85=E4=BA=8B=E4=B8=8B=E5=8F=91=EF=BC=8C?= =?utf8?q?=E7=9B=B4=E6=8E=A5=E5=81=9C=E6=AD=A2=EF=BC=8C=E4=B8=8D=E7=AD=89?= =?utf8?q?=E8=B6=85=E6=97=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../thunderbird/src/ThunderBirdModel.cpp | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) 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 98ffdb5e2..6cea8ccb6 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 @@ -3116,8 +3116,30 @@ extern "C" { if (lullabyView != nullptr) { std::string currentText = lullabyView->GetCurrentText(); if (currentText == "正在准备故事...") { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleStoryResponseFinished: 当前文本为'正在准备故事...',忽略finished信号"); - return; // 忽略这个finished信号 + // 如果文本仍然是"正在准备故事...",说明服务器返回finished=true但没有内容 + // 这可能是服务器错误,但finished=true是明确的结束信号,应该结束故事模式 + // 由于没有音频播放,HandleAudioPlaybackEnd不会被调用,所以需要直接退出故事模式 + // 但需要先检查是否还在故事模式,避免重复退出 + ThunderBirdMainView *view = ThunderBirdMainView::GetInstance(); + if (view) { + int16_t currentView = view->GetCurrentView(); + int16_t currentSubView = view->GetCurrentSubView(); + if (currentView == THUNDERBIRD_LULLABYVIEW && + currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleStoryResponseFinished: 当前文本为'正在准备故事...',但收到finished=true,服务器可能没有返回内容,直接退出故事模式"); + // 停止故事模式超时定时器(因为已经收到finished信号) + StopStoryModeTimeoutTimer(); + // 直接退出故事模式(因为没有音频播放,不会触发HandleAudioPlaybackEnd) + HandleSleepModeEnd(); + return; + } else { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleStoryResponseFinished: 当前不在故事模式,忽略finished信号"); + return; + } + }else { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleStoryResponseFinished: 当前不在故事模式,忽略finished信号"); + return; + } } WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleStoryResponseFinished: 当前文本为'%s',确认为真正的finished", currentText.c_str()); } -- 2.17.1