修复退出哄睡bug 3217/5
authorhcj <1224667075@qq.com>
Fri, 27 Feb 2026 02:18:20 +0000 (10:18 +0800)
committerhcj <1224667075@qq.com>
Fri, 27 Feb 2026 02:18:20 +0000 (10:18 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c

index a0cb8b0..b03f5b6 100644 (file)
@@ -3189,11 +3189,14 @@ extern "C" {
             ln_ws_end_audio_chat();
             // 强制中断音频播放
             // AI_ForceInterrupt();
+
+            //推送结束故事消息
+            ln_ws_send_sleep_mode_end_ack(true, "哄睡模式结束");
+
             // 发送中断消息(通知服务器停止发送音频数据)
             ln_ws_send_voice_chat_interrupt("退出哄睡");
             // 等待一小段时间,确保WebSocket线程处理完中断消息
-            //推送结束故事消息
-             ln_ws_send_sleep_mode_end_ack(true, "哄睡模式结束");
+
             // 音频deinit(清理音频资源)
             do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
             // 等待音频deinit完成,避免在音频清理过程中切换视图
index aed988c..aedd0e9 100644 (file)
@@ -1880,7 +1880,7 @@ int ln_ws_send_voice_chat_interrupt(const char *reason)
     }
     
     // 检查是否是退出对话场景
-    bool is_exit_dialogue = (strcmp(reason, "退出对话") == 0);
+    bool is_exit_dialogue = (strcmp(reason, "退出对话") == 0 || strcmp(reason, "退出哄睡") == 0);
     
     // 检查是否需要在1秒内有数据时触发重连
     bool need_reconnect = ln_ws_check_binary_data_interrupt();
@@ -2629,6 +2629,10 @@ static int ln_ws_parse_data_message(const char *json_str, ws_data_msg_t *data_ms
                data_msg->text_content, data_msg->audio_url, data_msg->audio_duration, data_msg->chat_id);
     }
     
+    if (data_msg->command == WS_CMD_SLEEP_MODE_END)
+    {
+        g_story_index=0;
+    }
     // 保存原始JSON字符串
     data_msg->raw_json = (char*)malloc(strlen(json_str) + 1);
     if (data_msg->raw_json) {