From 61c325c660ef1a9fe6e13c54f2b674eb412b1663 Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Fri, 26 Dec 2025 10:04:09 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E9=80=80=E5=87=BA=E5=AF=B9?= =?utf8?q?=E8=AF=9D=E6=AD=BB=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../src/ThunderBirdDialogueView.cpp | 4 ---- .../thunderbird/src/ThunderBirdModel.cpp | 3 +-- .../thunderbird/src/ThunderBirdPresenter.cpp | 21 ++++++++----------- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp index d27dca418..398683999 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp @@ -187,8 +187,6 @@ namespace OHOS { case THUNDERBIRD_DIALOGUEVIEW_SPEAKING: { - ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率 - ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); if (TextLabel) { TextLabel->SetPosition(37, 66, 325, 42); @@ -211,7 +209,6 @@ namespace OHOS } case THUNDERBIRD_DIALOGUEVIEW_LISTENING: { - ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); if (TextLabel) { TextLabel->SetPosition(111, 64, 180, 42); @@ -231,7 +228,6 @@ namespace OHOS } case THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW: { - ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率 // uapi_set_sleep_mode_active(false);//睡眠模式激活标志位 //如果仍在对话,取消对话 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 10e2ab072..08187ab33 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 @@ -1782,6 +1782,7 @@ extern "C" { if (currentView == THUNDERBIRD_DIALOGUEVIEW && (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING || currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING)) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "聆听/说话界面超时,自动跳转并退出对话"); + ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); if(bind_status == true) { view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); @@ -2837,8 +2838,6 @@ extern "C" { void ThunderBirdModel::HandleSleepModeEnd() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleSleepModeEnd"); - //关闭常亮屏 - ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 停止故事模式超时定时器 StopStoryModeTimeoutTimer(); // 重置故事模式finished标志 diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp index 8ffce1dd8..0838dcab2 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp @@ -812,7 +812,7 @@ namespace OHOS ln_ws_send_voice_chat_interrupt("退出哄睡"); do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率 - ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮 + // ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮 // ThunderBirdModel::GetInstance()->g_sleep_mode_active = false;//睡眠模式激活标志位 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); break; @@ -1203,7 +1203,8 @@ namespace OHOS ThunderBirdDialogueView::GetInstance()->Isband(true); } isDialogueing = true; - ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 打开屏幕常亮 + ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率 + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 进入对话模式时记录当前表情 ThunderBirdModel::GetInstance()->OnEnterDialogueMode(); // 获取对话体力与流量信息 @@ -1218,6 +1219,7 @@ namespace OHOS { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "退出对话模式,当前子状态: %d", currentSubView); + ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); #if LN_VOICE_CHAT_ENABLED //发送结束对话流标志 do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_CHAT_SESSION_END, NULL, 0); @@ -1228,7 +1230,8 @@ namespace OHOS { ThunderBirdModel::GetInstance()->StopCountUpTimer(); } - + ln_ws_end_audio_chat();//结束对话 + // 停止实际的音频播放 // ai_media_play_stop(); ThunderBirdDialogueView::GetInstance()->DialogueFirst = true; @@ -1240,20 +1243,14 @@ namespace OHOS // 退出对话模式,执行清理 ThunderBirdModel::GetInstance()->OnExitDialogueMode(); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress: Stopped AI audio playback"); - + // 先设置退出标志,防止录音结束回调误判为正常录音结束 + isDialogueing = false; // 等待视频切换完成,避免在视频切换过程中退出导致资源冲突 if (ThunderBirdMainView::GetInstance() && ThunderBirdMainView::IsSwitchingVideo()) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress: 等待视频切换完成"); ThunderBirdMainView::WaitForVideoSwitchComplete(2000); } - - // 先设置退出标志,防止录音结束回调误判为正常录音结束 - isDialogueing = false; - - ln_ws_end_audio_chat();//结束对话 - - - + // 检查绑定状态,如果未绑定则跳转到 THUNDERBIRD_GUIDEVIEW_5 if (!ThunderBirdModel::GetInstance()->getbind_status()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "设备未绑定,跳转到 THUNDERBIRD_GUIDEVIEW_5"); -- 2.17.1