修改表情恢复逻辑
authorxue <2144439972@qq.com>
Thu, 25 Dec 2025 02:47:28 +0000 (10:47 +0800)
committerxue <2144439972@qq.com>
Thu, 25 Dec 2025 02:47:28 +0000 (10:47 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp

index 648f150..1404cbd 100644 (file)
@@ -423,6 +423,9 @@ namespace OHOS
         
         // 对话模式相关标志
         bool m_dialogueModeFinished = false; // 对话模式是否已finished(收到finished=true)
+        
+        // 表情切换标志位
+        bool m_needGetTimelineExpression = false; // 是否需要获取时间线表情(从对话/哄睡退出到发呆中界面时使用)
 
     };
 }
index ce49796..d27dca4 100644 (file)
@@ -244,6 +244,19 @@ namespace OHOS
             //     ThunderBirdModel::GetInstance()->OnExitDialogueMode();
             //     ThunderBirdPresenter::GetInstance()->SetDialogueing(false);
             // }
+            
+            // 检查是否从对话/哄睡退出,如果是则获取时间线表情
+            if (ThunderBirdModel::GetInstance()->m_needGetTimelineExpression) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdDialogueView::Show: 从对话/哄睡退出到发呆中界面,获取时间线表情");
+                // 获取时间线表情
+                do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_TIMELINE_GET_STATUS, NULL, 0);
+                // 重置标志位
+                ThunderBirdModel::GetInstance()->m_needGetTimelineExpression = false;
+            } else {
+                // 正常进入发呆中界面,设置标志位为1
+                ThunderBirdModel::GetInstance()->m_needGetTimelineExpression = true;
+            }
+            
             // 从ThunderBirdModel获取当前表情和状态文本
             std::string currentStatusText = "发呆中...     ";
             Isband(true);
index 9798749..e3b4489 100644 (file)
@@ -444,9 +444,11 @@ namespace OHOS
             ThunderBirdModel::GetInstance()->ClearAudioTextQueue();
             ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
         } else if(currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING) {
-            AI_ForceInterrupt();
-            ln_ws_end_audio_chat();
-            ln_ws_send_voice_chat_interrupt("新对话开始");
+            GraphicService::GetInstance()->PostGraphicEvent([]() {
+                AI_ForceInterrupt();
+                ln_ws_end_audio_chat();
+                ln_ws_send_voice_chat_interrupt("新对话开始");
+            });
             ThunderBirdDialogueView::GetInstance()->IsReconnect = true;
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "开始录音,跳转到聆听状态");
             // 开始录音