增加vad与断网重连操作
authorxue <2144439972@qq.com>
Tue, 23 Dec 2025 12:34:11 +0000 (20:34 +0800)
committerxue <2144439972@qq.com>
Tue, 23 Dec 2025 12:34:11 +0000 (20:34 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp

index 87b3cba..08cbf06 100644 (file)
@@ -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);
index 831c8e0..4184678 100644 (file)
@@ -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;
                     // 退出到发呆中界面(状态界面)
index 2e8cdbd..cc78284 100644 (file)
@@ -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);
                 }