优化音频销毁流程 3114/1 3114/head 3122/target/1
authorxue <2144439972@qq.com>
Tue, 20 Jan 2026 01:41:52 +0000 (09:41 +0800)
committerxue <2144439972@qq.com>
Tue, 20 Jan 2026 01:41:52 +0000 (09:41 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp
code/sdk/zhihui/leiniao/imsl_ln/ln_api_websocket.c
code/sdk/zhihui/utils/custom_cmd_service.c

index 1d0731c..3d9b234 100644 (file)
@@ -564,7 +564,7 @@ extern "C" {
         {
             SetViewModel();
             //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_WS_ENTER_SLEEP, NULL, 0);
-            AI_ForceInterrupt();
+            // AI_ForceInterrupt();
             ln_ws_send_voice_chat_interrupt("进入OTA");
             do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
             //未绑定状态,也可以进入OTA
@@ -1905,7 +1905,7 @@ extern "C" {
                         // 先设置退出标志,防止录音结束回调误判为正常录音结束
                         ThunderBirdPresenter::GetInstance()->SetDialogueing(false);
                         ln_ws_end_audio_chat();//结束对话
-                        AI_ForceInterrupt();
+                        // AI_ForceInterrupt();
                         ln_ws_send_voice_chat_interrupt("退出对话");
                         do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
                         ThunderBirdModel::GetInstance()->OnExitDialogueMode();
@@ -1992,7 +1992,7 @@ extern "C" {
                              currentSubView == ThunderBirdAdjustView::THUNDERBIRD_ADJUSTVIEW_BIND_SUCCESS) {
                             if (bind_status == false) {
                                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "解绑警告界面超时,恢复出厂设置");
-                                AI_ForceInterrupt();
+                                // AI_ForceInterrupt();
                                 ln_ws_send_voice_chat_interrupt("恢复出厂设置");
                                 do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
                                 restore_factory_settings();
@@ -2437,7 +2437,7 @@ extern "C" {
                      currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING)) {
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleScheduleReminder: 在对话界面,先打断语音并退出对话模式,跳转到发呆中界面");
                     // 打断语音播放并彻底退出对话
-                    AI_ForceInterrupt();
+                    // AI_ForceInterrupt();
                     ln_ws_send_voice_chat_interrupt("日程提醒");
                     ln_ws_end_audio_chat();//结束对话
                     do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
@@ -2680,7 +2680,7 @@ extern "C" {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleCharacterConfigChange: 角色配置已更新");
         
         // 角色切换完成后,上报蓝牙连接状态
-        ln_bt_report_earphone_connection_status();
+        ln_bt_report_earphone_connection_status(false);  // 不需要弹窗
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleCharacterConfigChange: 角色切换完成,已上报蓝牙连接状态");
 
         // SaveCharacterConfig(characterId, characterName, eyesShape, hairColor, eyesColor, hairStyle, screenImageAsEmoji);
@@ -3102,7 +3102,7 @@ extern "C" {
             // 先停止音频聊天,确保WebSocket线程停止接收音频数据
             ln_ws_end_audio_chat();
             // 强制中断音频播放
-            AI_ForceInterrupt();
+            // AI_ForceInterrupt();
             // 发送中断消息(通知服务器停止发送音频数据)
             ln_ws_send_voice_chat_interrupt("退出哄睡");
             // 等待一小段时间,确保WebSocket线程处理完中断消息
@@ -3147,8 +3147,8 @@ extern "C" {
                 ThunderBirdMainView::GetInstance()->listenIcon->SetVisible(false);
             }
             //直接退出到状态显示界面
-            AI_ForceInterrupt();
-            ln_ws_send_voice_chat_interrupt("退出哄睡");
+            // 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);
@@ -3222,7 +3222,7 @@ extern "C" {
         
         // 1. 停止其他音频服务,避免冲突
         ln_audio_simple_stop();
-        AI_ForceInterrupt();
+        // AI_ForceInterrupt();
         do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
         
         // 2. 跳转到对话说话界面
@@ -3446,7 +3446,7 @@ extern "C" {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleDownloadFile: 无法获取蓝牙图标状态,默认保存为false");
         }
         do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
-        AI_ForceInterrupt();
+        // AI_ForceInterrupt();
         ln_ws_send_voice_chat_interrupt("下载表情");
         m_wasInDownloadView = true;  // 标记已进入下载界面
         NativeAbility::GetInstance().ChangeSlice(VIEW_OTA);
index 35ba0a4..54803bc 100644 (file)
@@ -244,7 +244,7 @@ namespace OHOS
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandlePowerKey: 长按关机键,进入关机界面");
             powerKeyPressed = false; // 重置标志位
             // 退出对话模式时恢复表情
-            AI_ForceInterrupt();
+            // AI_ForceInterrupt();
             ln_ws_send_voice_chat_interrupt("关机");
             do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
             // 关闭WebSocket连接,屏蔽小程序下发的命令
@@ -1274,7 +1274,7 @@ namespace OHOS
                 // 停止实际的音频播放
                 // ai_media_play_stop();
                 // 退出对话模式时恢复表情
-                AI_ForceInterrupt();
+                // AI_ForceInterrupt();
                 ln_ws_send_voice_chat_interrupt("退出对话");
                 do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
                 
index 63efd84..96e867f 100644 (file)
@@ -3246,9 +3246,9 @@ static void ln_ws_reconnect_success_callback(void)
         memset(story_theme_cache,0,sizeof(story_theme_cache));
     }
     
-    // // 设备重新上线后,上报蓝牙状态
+    // 设备重新上线后,上报蓝牙状态
     // LN_WS_INFO("Device reconnected, reporting Bluetooth status\n");
-    // ln_bt_report_earphone_connect ion_status();
+    ln_bt_report_earphone_connection_status(false);
     
     LN_WS_INFO("Reconnect success event triggered\n");
 }
index a7b8f63..4dffad9 100644 (file)
@@ -31,6 +31,8 @@
 
 #include "custom_utils.h"
 
+#include "ai_media.h"
+
 #ifdef SUPPORT_CAT1_SERVICE
 #include "cat1_pub_api.h"
 #endif
@@ -501,6 +503,7 @@ case CUSTOM_CMD_MSG_START_AI_ASR:
             break;
         case CUSTOM_CMD_MSG_AUDIO_DEINIT:
             PRINT("Audio deinit via custom cmd\n");
+            AI_ForceInterrupt();
             ln_ws_audio_deinit();
             break;
         case CUSTOM_CMD_MSG_VAD_AUTH: