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);
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);
}
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秒后自动跳转到状态界面
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);
(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;
// 退出到发呆中界面(状态界面)
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;
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);
}