if (keyState == InputDevice::STATE_LONG_PRESS) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandlePowerKey: 长按关机键,进入关机界面");
powerKeyPressed = false; // 重置标志位
+ // 退出对话模式时恢复表情
+ AI_ForceInterrupt();
+ ln_ws_send_voice_chat_interrupt("退出哄睡");
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
NativeAbility::GetInstance().SwitchSlice(VIEW_REBOOT);
return true;
}
// 按下电源键
if (keyState == InputDevice::STATE_PRESS) {
powerKeyPressed = true; // 设置按下标志位
-
+ #if defined(SUPPORT_CAT1_SERVICE) || defined(SUPPORT_PPP_SERVICE)
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandlePowerKey: restart_time_sync");
+ restart_time_sync();
+ #endif
if (screenState == 1) {
// 息屏状态下按下:亮屏(由系统自动处理)
// 亮屏时触发时间同步
- #ifdef SUPPORT_CAT1_SERVICE
- restart_time_sync();
- #endif
screenOnFromOff = true; // 标记是从息屏状态亮屏的
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandlePowerKey: Screen on from off, trigger time sync");
return true;
} else {
// 亮屏状态下按下,清除标志位
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandlePowerKey: screenState == 2");
screenOnFromOff = false;
}
}
// FUNC键松开时,如果没有进入对话模式则关闭音频初始化
if (keyState == InputDevice::STATE_RELEASE && screenState == 0 && !isDialogueing && currentView != THUNDERBIRD_LULLABYVIEW) {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC键松开,未进入对话模式,关闭音频初始化");
- // do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC键松开,未进入对话模式,关闭音频初始化");
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
}
return true;
ln_ws_end_audio_chat();
//清空音频文本队列
ThunderBirdModel::GetInstance()->ClearAudioTextQueue();
- } else {
+ } else if(currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "开始录音,跳转到聆听状态");
// 开始录音
ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
|| (currentView == THUNDERBIRD_GUIDEVIEW))
{
do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
- ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式");
- // 检查WebSocket连接状态
+ // 检查WebSocket连接状态和VAD认证状态
int wsState = ln_ws_get_connection_state();
bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
+ bool vadEnabled = ln_ws_is_vad_server_enabled();
+
- //只要开机的时候检查
- if (!wsConnected && ThunderBirdModel::GetInstance()->init_falg == false) {
- // WebSocket未连接,显示网络断开提醒界面,不设置定时器
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式时WebSocket未连接,显示网络断开提醒 (wsState=%d)", wsState);
- // 设置标志,表示用户想要进入对话模式但因为WebSocket未连接而显示提醒
- isDialogueing = true; // 设置标志,这样WebSocket连接成功时知道要进入对话模式
+ if (!wsConnected) {
+ // 不满足条件,显示提示并设置2秒定时器自动隐藏
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式条件不满足: wsConnected=%d", wsConnected);
+ // 先切换到提醒视图
+ ThunderBirdModel::GetInstance()->StartReminderHideTimer(2000);
ThunderBirdMainView::GetInstance()->ChangeThunderBirdReminderView(THUNDERBIRD_REMINDERVIEW);
ThunderBirdReminderView *reminderView = ThunderBirdReminderView::GetInstance();
if (reminderView) {
- reminderView->Show(ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_NETWORK_DISCONNECT);
- reminderView->dialogue_unnetwork();
+ if (!wsConnected) {
+ // WebSocket未连接,显示网络断开提醒
+ reminderView->Show(ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_NETWORK_DISCONNECT);
+ reminderView->dialogue_unnetwork();
+ }
+ // 显示后再设置2秒定时器自动隐藏提示
+ } else {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdReminderView::GetInstance() returned NULL");
}
+ return; // 不满足条件,不进入对话模式
}
- // 检查音频是否已初始化,如果未初始化则设置标志位等待定时器检查
- // if(ln_ws_is_audio_initialized())
- // {
- // 音频已初始化,直接跳转界面
- ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
- if(currentView == THUNDERBIRD_GUIDEVIEW)
- {
- ThunderBirdDialogueView::GetInstance()->Isband(false);
- }
- else
+ // 条件满足,进入对话模式
+ ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式");
+
+ // 音频已初始化,直接跳转界面
+ ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
+ if(currentView == THUNDERBIRD_GUIDEVIEW)
+ {
+ ThunderBirdDialogueView::GetInstance()->Isband(false);
+ }
+ else
+ {
+ ThunderBirdDialogueView::GetInstance()->Isband(true);
+ }
+ bool vadInitialized = ln_ws_is_vad_server_initialized();
+ bool vadAuthSuccess = ln_ws_is_vad_server_auth_success();
+ if(vadAuthSuccess == true || vadInitialized == true)
+ {
+ vadFirstSuccess = true;
+ }
+ if(vadFirstSuccess == false)
+ {
+ ThunderBirdModel::GetInstance()->StartReminderHideTimer(3000);
+ ThunderBirdMainView::GetInstance()->ChangeThunderBirdReminderView(THUNDERBIRD_REMINDERVIEW);
+ ThunderBirdReminderView *reminderView = ThunderBirdReminderView::GetInstance();
+ if (reminderView)
{
- ThunderBirdDialogueView::GetInstance()->Isband(true);
+ reminderView->Show(ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_VAD_INITIALIZING);
+ reminderView->dialogue_vad_initializing();
}
- // }
- // else
- // {
- // // 音频未初始化,设置标志位,等待定时器检查
- // pendingDialogueJump = true;
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "音频未初始化,设置pendingDialogueJump=true,等待定时器检查");
- // }
+ }
isDialogueing = true;
ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 打开屏幕常亮