void UpdateTaskReminderText(const char* text);
void UpdateTaskReminderIcon(const char* icon);
+
+
void IsIcon(bool flag);
-
+ void dialogue_unnetwork();
enum : int16_t {
THUNDERBIRD_REMINDERVIEW_VOLUME = 0, // 音量调节
THUNDERBIRD_REMINDERVIEW_TASK_REMINDER, // 事项提醒
{
ota_update_boot();
}
+ ThunderBirdMainView *view = ThunderBirdMainView::GetInstance();
+ if (view) {
+ int16_t currentView = view->GetCurrentView();
+ int16_t currentSubView = view->GetCurrentSubView();
+
+ // 检查是否在对话界面
+ if (currentView == THUNDERBIRD_DIALOGUEVIEW && (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING || currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING)) {
+ // 检查是否是在对话模式进入时因为WebSocket未连接而显示的提醒
+ ThunderBirdPresenter *presenter = ThunderBirdPresenter::GetInstance();
+ if (presenter && presenter->isDialogueing) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[定时器] WebSocket连接成功,隐藏网络断开提醒,进入对话模式");
+ // 隐藏提醒界面
+ if(ThunderBirdReminderView::GetInstance())
+ {
+ ThunderBirdReminderView::GetInstance()->HideAll();
+ }
+ // 如果在对话界面,初始化音频
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[定时器] WebSocket连接成功,在对话界面,初始化音频");
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
+ }
+ }
+ }
#if JUHEPINGTAI
uapi_init_all_websocket_servers();
#endif
init_falg = true;
}
+
}
}
// }
// }
+
+
// 处理计数定时器
if (m_countUpActive) {
if (m_countUpValue >= m_countUpTarget) {
ThunderBirdMainView::SetTimelineReceived(false);
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Network disconnected, reset timeline received flag");
}
+
}
// 记录网络状态更新日志
currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING &&
m_dialogueModeFinished)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioPlaybackEnd: 对话模式finished且音频播放结束,结束对话");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioPlaybackEnd: 对话模式finished且音频播放结束");
// 重置标志
m_dialogueModeFinished = false;
- // 结束对话
-
- //切换到聆听界面
- ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
-
- // ThunderBirdDialogueView::GetInstance()->AudioPlaybackEnd();
- // //增加30秒定时器
- // ThunderBirdModel::GetInstance()->StartCountUpTimer(120);
-
-
- // ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
- // 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();
+ // 停止动效
+ ThunderBirdDialogueView::GetInstance()->AudioPlaybackEnd();
+ // 启动8秒定时器,时间到就退出对话
+ StartCountUpTimer(8);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleAudioPlaybackEnd: 启动8秒定时器,时间到就退出对话");
return;
}
if (keyState == InputDevice::STATE_PRESS && screenState == 0 ) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleFuncKey: KEY_TYPE_FUNC press");
- // 在非对话模式下按下FUNC键时,预先初始化音频
+ // 在非对话模式下按下FUNC键时,预先初始化音频(需要WebSocket已连接)
if (!isDialogueing && ((currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW)
|| (currentView == THUNDERBIRD_GUIDEVIEW))) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "非对话模式下FUNC键按下,预先初始化音频");
- do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
+ // 检查WebSocket连接状态
+ int wsState = ln_ws_get_connection_state();
+ bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
+ if (wsConnected) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "非对话模式下FUNC键按下,WebSocket已连接,预先初始化音频");
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
+ } else {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "非对话模式下FUNC键按下,WebSocket未连接,不预初始化音频 (wsState=%d)", wsState);
+ }
}
if(currentView == THUNDERBIRD_LULLABYVIEW && currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3)
{
ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式");
+
+ // 检查WebSocket连接状态
+ int wsState = ln_ws_get_connection_state();
+ bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
+
+ if (!wsConnected) {
+ // WebSocket未连接,显示网络断开提醒界面,不设置定时器
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式时WebSocket未连接,显示网络断开提醒 (wsState=%d)", wsState);
+ // 设置标志,表示用户想要进入对话模式但因为WebSocket未连接而显示提醒
+ isDialogueing = true; // 设置标志,这样WebSocket连接成功时知道要进入对话模式
+ ThunderBirdMainView::GetInstance()->ChangeThunderBirdReminderView(THUNDERBIRD_REMINDERVIEW);
+ ThunderBirdReminderView *reminderView = ThunderBirdReminderView::GetInstance();
+ if (reminderView) {
+ reminderView->Show(ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_NETWORK_DISCONNECT);
+ reminderView->dialogue_unnetwork();
+ }
+ }
+
ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
if(currentView == THUNDERBIRD_GUIDEVIEW)
{
ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5);
} else {
ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+ }
+ if(ThunderBirdReminderView::GetInstance())
+ {
+ ThunderBirdReminderView::GetInstance()->HideAll();
}
ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率
ThunderBirdModel::GetInstance()->OnExitDialogueMode();
}
}
-}
-
+}
\ No newline at end of file
RemindIcon->SetVisible(false);
}
}
+ void ThunderBirdReminderView::dialogue_unnetwork()
+ {
+ if (RemindButton)
+ {
+ RemindButton->SetPosition(85, 114, 210, 59);
+ RemindButton->SetText("等待网络连接");
+ }
+ if (RemindIcon)
+ {
+ RemindIcon->SetPosition(105, 120, 47, 47);
+ RemindIcon->SetSrc("/user/res/no_network.bin");
+ RemindIcon->SetVisible(true);
+ }
+ }
}