From d232e7cf97550606bb35db52bfbf99253158f836 Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Tue, 23 Dec 2025 20:34:11 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0vad=E4=B8=8E=E6=96=AD=E7=BD=91?= =?utf8?q?=E9=87=8D=E8=BF=9E=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../src/ThunderBirdDialogueView.cpp | 18 +++++++-------- .../thunderbird/src/ThunderBirdModel.cpp | 15 ++++-------- .../thunderbird/src/ThunderBirdPresenter.cpp | 23 +++++++------------ 3 files changed, 22 insertions(+), 34 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 87b3cba1d..08cbf06e6 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 @@ -223,15 +223,15 @@ namespace OHOS ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率 // uapi_set_sleep_mode_active(false);//睡眠模式激活标志位 //如果仍在对话,取消对话 - if(ThunderBirdPresenter::GetInstance()->isDialogueing) - { - AI_ForceInterrupt(); - ln_ws_send_voice_chat_interrupt("退出对话"); - do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); - ln_ws_end_audio_chat();//结束对话 - ThunderBirdModel::GetInstance()->OnExitDialogueMode(); - ThunderBirdPresenter::GetInstance()->SetDialogueing(false); - } + // if(ThunderBirdPresenter::GetInstance()->isDialogueing) + // { + // AI_ForceInterrupt(); + // ln_ws_send_voice_chat_interrupt("退出对话"); + // do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); + // ln_ws_end_audio_chat();//结束对话 + // ThunderBirdModel::GetInstance()->OnExitDialogueMode(); + // ThunderBirdPresenter::GetInstance()->SetDialogueing(false); + // } // 从ThunderBirdModel获取当前表情和状态文本 std::string currentStatusText = "发呆中... "; Isband(true); 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 831c8e01b..4184678ec 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 @@ -1788,10 +1788,10 @@ extern "C" { int16_t currentView = view->GetCurrentView(); int16_t currentSubView = view->GetCurrentSubView(); - // 检查是否是聆听界面超时,需要自动跳转到状态界面 + // 检查是否是聆听/说话界面超时,需要自动跳转到状态界面并退出对话 if (currentView == THUNDERBIRD_DIALOGUEVIEW && (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING || currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING)) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "聆听界面超时,自动跳转到说话界面"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "聆听/说话界面超时,自动跳转并退出对话"); if(bind_status == true) { view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW); @@ -1802,14 +1802,11 @@ extern "C" { } ThunderBirdDialogueView::GetInstance()->DialogueFirst = true; 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); - ThunderBirdPresenter::GetInstance()->SetDialogueing(false); - ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮 - ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率 ThunderBirdModel::GetInstance()->OnExitDialogueMode(); + ThunderBirdPresenter::GetInstance()->SetDialogueing(false); } // 检查是否是网络连接中界面,6秒后自动跳转到状态界面 @@ -2115,7 +2112,7 @@ extern "C" { m_cat1PowerStatus = uapi_dev_runtime_get_cat1_powerstat(); // CAT1电源状态 m_signalStrength = cat1_api_runtime_get_cat1_signal_bars(); // 信号强度 (旧接口,保留兼容性) m_networkStatus = uapi_dev_runtime_get_cat1_networkstat(); // 网络连接状态 - m_networkType = cat1_api_runtime_get_cat1_networktype(); // 网络类型 + // m_networkType = cat1_api_runtime_get_cat1_networktype(); // 网络类型 // 更新网络连接标志位:m_networkStatus == 1表示有网络连接 m_hasNetwork = (m_networkStatus == 1); @@ -2227,14 +2224,12 @@ extern "C" { (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING || currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING)) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleScheduleReminder: 在对话界面,先打断语音并退出对话模式,跳转到发呆中界面"); - // 打断语音播放 + // 打断语音播放并彻底退出对话 AI_ForceInterrupt(); ln_ws_send_voice_chat_interrupt("日程提醒"); ln_ws_end_audio_chat();//结束对话 do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0); ThunderBirdPresenter::GetInstance()->SetDialogueing(false); - ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮 - ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率 ThunderBirdModel::GetInstance()->OnExitDialogueMode(); ThunderBirdDialogueView::GetInstance()->DialogueFirst = true; // 退出到发呆中界面(状态界面) 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 2e8cdbddc..cc7828451 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 @@ -1166,7 +1166,7 @@ namespace OHOS if(vadAuthCount > 2) { //先同步时间 - cat1_api_runtime_sync_time(); + cat1_gettime(); //重新vad认证 do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_VAD_AUTH, NULL, 0); vadAuthCount = 0; @@ -1246,26 +1246,19 @@ namespace OHOS AI_ForceInterrupt(); ln_ws_send_voice_chat_interrupt("退出对话"); isDialogueing = false; - ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮 - 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); - } + // 退出对话模式,执行清理 + 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); - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "设备已绑定,跳转到 THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW"); + // 退出对话模式,执行清理(无论从哪个子状态退出都需要清理) + 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); } -- 2.17.1