优化对话哄睡与蓝牙之间的逻辑(补)
authorxue <2144439972@qq.com>
Sat, 20 Dec 2025 08:27:38 +0000 (16:27 +0800)
committerxue <2144439972@qq.com>
Sat, 20 Dec 2025 08:27:38 +0000 (16:27 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp

index c61961a..00ba1cb 100644 (file)
@@ -32,6 +32,7 @@
 #include "ln_api.h"
 #include "common/screen.h"
 #include "common/lite_surface.h"
+#include "ai_media.h"
 namespace OHOS
 {
     static constexpr int16_t VIDEO_WIDTH = 360;
@@ -899,12 +900,15 @@ namespace OHOS
         }
         if(showView == THUNDERBIRD_BLUEVIEW )
         {
+            
             if(hideView == THUNDERBIRD_LULLABYVIEW)
             {
                 ThunderBirdModel::GetInstance()->HandleSleepModeEnd();
             }
-            else if(hideView == THUNDERBIRD_DIALOGUEVIEW && (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING || currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING))
+            else if(hideView == THUNDERBIRD_DIALOGUEVIEW && (currentSubView_ == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING || currentSubView_ == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING))
             {
+                ThunderBirdModel::GetInstance()->StopCountUpTimer();
+                ThunderBirdPresenter::GetInstance()->SetDialogueing(false);
                 ln_ws_end_audio_chat();//结束对话
                 AI_ForceInterrupt();
                 ln_ws_send_voice_chat_interrupt("退出对话");
index f1dfd44..47aa4d6 100644 (file)
@@ -2815,27 +2815,13 @@ extern "C" {
             //亮屏
             uapi_set_screen_on_api();
             int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); //获取当前视图
-            int currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
-            //如果在对话界面,则停止对话
-            if(currentView == THUNDERBIRD_DIALOGUEVIEW && (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING || currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING))
-            {
-                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);
-            }
-            //如果在哄睡界面,则停止哄睡
-            if(currentView == THUNDERBIRD_LULLABYVIEW)
-            {
-           // 退出哄睡模式时恢复时间线表情
-                ThunderBirdModel::GetInstance()->HandleSleepModeEnd();
-            }
             // 检查是否有已绑定的设备
             BluetoothModel* btModel = BluetoothModel::GetInstance();
             if (btModel != nullptr) {
                 List<BluetoothCaseInfo>& connedDevices = btModel->GetConnedDevicesCase();
                 if (!connedDevices.IsEmpty()) {
                     // 如果有已绑定的设备,直接跳转到设备列表页面
+                    // ChangeView 中会自动处理对话/哄睡界面的退出逻辑
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBluetoothConnect: 已有绑定设备,跳转到设备列表页面");
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_DEVICE_LIST);
                     return;
@@ -2843,6 +2829,7 @@ extern "C" {
             }
             
             // 没有已绑定设备,跳转到配对准备页面
+            // ChangeView 中会自动处理对话/哄睡界面的退出逻辑
             ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_BLUEVIEW, ThunderBirdBlueView::THUNDERBIRD_BULEVIEW_ENTER);
             //不管跳到什么界面都要先停止视频
             ThunderBirdMainView::GetInstance()->videoPlay_->PauseVideoPlay();