增加退出对话网络检测,避免死机 2998/2 2998/head 3001/target/1
authorxue <2144439972@qq.com>
Tue, 30 Dec 2025 07:06:08 +0000 (15:06 +0800)
committerxue <2144439972@qq.com>
Tue, 30 Dec 2025 07:06:08 +0000 (15:06 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdPresenter.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp

index 99fea8b..7b9e1bd 100644 (file)
@@ -59,6 +59,8 @@ namespace OHOS
 
         bool isLullabyRecording{false};
 
+        bool isDialogueExitFinished{true};//退出对话是否完成标志位
+
         //记录联网次数
         int networkCount{0};
         //记录vad认证次数
index 2e7b28e..f52bc32 100644 (file)
@@ -1255,6 +1255,11 @@ namespace OHOS
             }
             else if(currentView == THUNDERBIRD_DIALOGUEVIEW)
             {
+                if(isDialogueExitFinished == false)
+                {
+                    return;
+                }
+                isDialogueExitFinished = false;
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "退出对话模式,当前子状态: %d", currentSubView);
 
                 ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
@@ -1271,8 +1276,14 @@ namespace OHOS
                 // 停止实际的音频播放
                 // ai_media_play_stop();
                 // 退出对话模式时恢复表情
+                //如果ws未连接,则不发送打断请求
+                int wsState = ln_ws_get_connection_state();
+                bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
+                if(wsConnected)
+                {
                 AI_ForceInterrupt();
                 ln_ws_send_voice_chat_interrupt("退出对话");
+                }
                 do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
                 
                 // 退出对话模式,执行清理
@@ -1281,10 +1292,10 @@ namespace OHOS
                 // 先设置退出标志,防止录音结束回调误判为正常录音结束
                 isDialogueing = false;
                 // 等待视频切换完成,避免在视频切换过程中退出导致资源冲突
-                if (ThunderBirdMainView::GetInstance() && ThunderBirdMainView::IsSwitchingVideo()) {
-                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress: 等待视频切换完成");
-                    ThunderBirdMainView::WaitForVideoSwitchComplete(2000);
-                }
+                // if (ThunderBirdMainView::GetInstance() && ThunderBirdMainView::IsSwitchingVideo()) {
+                //     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress: 等待视频切换完成");
+                //     ThunderBirdMainView::WaitForVideoSwitchComplete(2000);
+                // }
             
                 // 检查绑定状态,如果未绑定则跳转到 THUNDERBIRD_GUIDEVIEW_5
                 if (!ThunderBirdModel::GetInstance()->getbind_status()) {
@@ -1302,7 +1313,7 @@ namespace OHOS
                 {
                     ThunderBirdReminderView::GetInstance()->HideAll();
                 }
-                
+                isDialogueExitFinished = true;
             }
             //当为故事模式
             else if(currentView == THUNDERBIRD_LULLABYVIEW && currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4)