From 73ebbf58c6c0741194b52f261287f282fa6808e8 Mon Sep 17 00:00:00 2001 From: aliyun3243248791 Date: Tue, 23 Dec 2025 08:48:20 +0000 Subject: [PATCH] Merge #2959 into ln from refs/changes/2959/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 优化蓝牙打断 * refs/changes/2959/head: (1 commits squashed) - 优化蓝牙打断 Signed-off-by: 薛文强 Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/2959 --- .../zhihui/ai/media/ai_media_service_ext.cpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/code/sdk/zhihui/ai/media/ai_media_service_ext.cpp b/code/sdk/zhihui/ai/media/ai_media_service_ext.cpp index d77135936..8badf5102 100644 --- a/code/sdk/zhihui/ai/media/ai_media_service_ext.cpp +++ b/code/sdk/zhihui/ai/media/ai_media_service_ext.cpp @@ -2450,6 +2450,30 @@ int32_t AI_ForceInterrupt(void) // ResetAudioStreams(); MEDIA_INFO_LOG("AI voice force interrupt completed"); + + if (a2dp_is_connect) + { + uint32_t queueSize = 0, queueCapacity = 0; + AI_GetQueueStatus(&queueSize, &queueCapacity); + if (queueSize == 0) + { + // 使用静音音频数据(自动匹配大小) + AIVoiceQueueMessage cachedMsg; + cachedMsg.size = SILENCE_AUDIO_SIZE; + cachedMsg.data = (uint8_t *)malloc(cachedMsg.size); + memcpy(cachedMsg.data, (void*)silence_audio, SILENCE_AUDIO_SIZE); + + osStatus_t queueStatus = osMessageQueuePut(g_aiVoiceContext->inputQueue, &cachedMsg, 0, 0); + if (queueStatus == osOK) { + g_aiVoiceContext->queueMsgCount++; + // MEDIA_INFO_LOG("Successfully restored %u bytes from cache to queue", cachedMsg.size); + } else { + MEDIA_ERR_LOG("Failed to restore cached data to queue: %d", queueStatus); + // 如果队列写入失败,释放内存 + free(cachedMsg.data); + } + } + } MediaMutexUnLock(mutex); return 0; -- 2.17.1