From c0680e3c8ef946ea09dadf02f884b35671a70100 Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Tue, 23 Dec 2025 17:14:06 +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=E9=80=BB=E8=BE=91=EF=BC=88=E8=A1=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../thunderbird/src/ThunderBirdPresenter.cpp | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) 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 dd2db7dc7..585682b99 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 @@ -1217,29 +1217,47 @@ namespace OHOS // ai_media_play_stop(); ThunderBirdDialogueView::GetInstance()->DialogueFirst = true; WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress: Stopped AI audio playback"); + + // 等待视频切换完成,避免在视频切换过程中退出导致资源冲突 + if (ThunderBirdMainView::GetInstance() && ThunderBirdMainView::IsSwitchingVideo()) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress: 等待视频切换完成"); + ThunderBirdMainView::WaitForVideoSwitchComplete(2000); + } + ln_ws_end_audio_chat();//结束对话 // 退出对话模式时恢复表情 AI_ForceInterrupt(); ln_ws_send_voice_chat_interrupt("退出对话"); - do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); isDialogueing = false; ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮 - // DialogueingFlag = false; + ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率 + + // 如果从STATUS_SHOW退出,ChangeView不会触发退出逻辑(因为条件不满足),需要手动调用 + // 如果从LISTENING或SPEAKING退出,ChangeView会处理退出逻辑,这里不需要重复调用 + bool needManualExit = (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); // 检查绑定状态,如果未绑定则跳转到 THUNDERBIRD_GUIDEVIEW_5 if (!ThunderBirdModel::GetInstance()->getbind_status()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "设备未绑定,跳转到 THUNDERBIRD_GUIDEVIEW_5"); + if (needManualExit) { + ThunderBirdModel::GetInstance()->OnExitDialogueMode(); + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); + } ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5); } else { + if (needManualExit) { + ThunderBirdModel::GetInstance()->OnExitDialogueMode(); + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); + } ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); } + + // 隐藏提醒视图 if(ThunderBirdReminderView::GetInstance()) { ThunderBirdReminderView::GetInstance()->HideAll(); } - ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率 - ThunderBirdModel::GetInstance()->OnExitDialogueMode(); } //当为故事模式 -- 2.17.1