修复哄睡过程中蓝牙操作界面显示错乱的bug
authorxue <2144439972@qq.com>
Tue, 13 Jan 2026 10:25:03 +0000 (18:25 +0800)
committerxue <2144439972@qq.com>
Tue, 13 Jan 2026 10:25:03 +0000 (18:25 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp

index bd95bdd..3dbe0e4 100644 (file)
@@ -2932,6 +2932,24 @@ extern "C" {
         
         if (ThunderBirdMainView::GetInstance()) {
             int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); //获取当前视图
+            
+            // 如果当前视图已经是蓝牙界面,说明是从蓝牙连接触发的退出,不需要再切换到对话界面
+            if (currentView == THUNDERBIRD_BLUEVIEW) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleSleepModeEnd: 当前已在蓝牙界面,跳过切换到对话界面");
+                // 退出哄睡模式时恢复时间线表情
+                OnExitLullabyMode();
+                if (ThunderBirdMainView::GetInstance() && ThunderBirdMainView::GetInstance()->listenIcon) {
+                    ThunderBirdMainView::GetInstance()->listenIcon->SetVisible(false);
+                }
+                //直接退出到状态显示界面
+                AI_ForceInterrupt();
+                ln_ws_send_voice_chat_interrupt("退出哄睡");
+                //推送结束故事消息
+                do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_STORY_FINISH, NULL, 0);
+                do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
+                return;
+            }
+            
             // 退出哄睡模式时恢复时间线表情
             OnExitLullabyMode();
             if (ThunderBirdMainView::GetInstance() && ThunderBirdMainView::GetInstance()->listenIcon) {
@@ -3046,6 +3064,13 @@ extern "C" {
             //亮屏
             uapi_set_screen_on_api();
             int currentView = ThunderBirdMainView::GetInstance()->GetCurrentView(); //获取当前视图
+            
+            // 如果当前在哄睡模式,清除时间线表情获取标志(因为要退出到蓝牙界面,不需要获取时间线表情)
+            if (currentView == THUNDERBIRD_LULLABYVIEW) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBluetoothConnect: 当前在哄睡模式,清除时间线表情获取标志(退出到蓝牙界面)");
+                m_needGetTimelineExpression = false;
+            }
+            
             // 检查是否有已绑定的设备
             BluetoothModel* btModel = BluetoothModel::GetInstance();
             if (btModel != nullptr) {