From 9756e71a23844ddb14061829b7f27351f94382ba Mon Sep 17 00:00:00 2001 From: Sucan <632190820@qq.com> Date: Fri, 13 Mar 2026 16:45:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=AF=AD=E9=9F=B3?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81=E7=AE=A1=E7=90=86=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在收到流式语音指令时,立即标记当前任务为语音任务,防止被其他任务覆盖 在TTS队列和缓冲区清空且无语音播放时,自动清除语音任务标记 将onReposeStatusChanged方法移至文件末尾以保持代码结构清晰 --- .../lzwcai_terminal_temi/MainActivity.kt | 46 ++++++++++++------- .../lzwcai_terminal_temi/MqttManager.kt | 9 ++-- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/example/lzwcai_terminal_temi/MainActivity.kt b/app/src/main/java/com/example/lzwcai_terminal_temi/MainActivity.kt index 8f4d75b..78c3b76 100644 --- a/app/src/main/java/com/example/lzwcai_terminal_temi/MainActivity.kt +++ b/app/src/main/java/com/example/lzwcai_terminal_temi/MainActivity.kt @@ -380,23 +380,15 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG } } - override fun onReposeStatusChanged(status: Int, description: String) { - when (status) { - OnReposeStatusChangedListener.REPOSING_COMPLETE -> { - val ttsRequest = TtsRequest.create("重新定位成功", false, language = TtsRequest.Language.ZH_CN) - robot.speak(ttsRequest) - Log.i("MainActivity", "Repose complete") - } - OnReposeStatusChangedListener.REPOSING_ABORT -> { - val ttsRequest = TtsRequest.create("重新定位被中断", false, language = TtsRequest.Language.ZH_CN) - robot.speak(ttsRequest) - Log.w("MainActivity", "Repose aborted") - } - OnReposeStatusChangedListener.REPOSING_START -> { - val ttsRequest = TtsRequest.create("正在进行重新定位", false, language = TtsRequest.Language.ZH_CN) - robot.speak(ttsRequest) - Log.i("MainActivity", "Repose started") - } + fun markSpeechTaskActive() { + if (currentTask.isEmpty() || currentTask == "speech") { + setCurrentTask("speech") + } + } + + fun clearSpeechTaskIfActive() { + if (currentTask == "speech") { + setCurrentTask("") } } @@ -463,4 +455,24 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG outState.putString("lastArrivalLocation", lastArrivalLocation) } + override fun onReposeStatusChanged(status: Int, description: String) { + when (status) { + OnReposeStatusChangedListener.REPOSING_COMPLETE -> { + val ttsRequest = TtsRequest.create("重新定位成功", false, language = TtsRequest.Language.ZH_CN) + robot.speak(ttsRequest) + Log.i("MainActivity", "Repose complete") + } + OnReposeStatusChangedListener.REPOSING_ABORT -> { + val ttsRequest = TtsRequest.create("重新定位被中断", false, language = TtsRequest.Language.ZH_CN) + robot.speak(ttsRequest) + Log.w("MainActivity", "Repose aborted") + } + OnReposeStatusChangedListener.REPOSING_START -> { + val ttsRequest = TtsRequest.create("正在进行重新定位", false, language = TtsRequest.Language.ZH_CN) + robot.speak(ttsRequest) + Log.i("MainActivity", "Repose started") + } + } + } + } diff --git a/app/src/main/java/com/example/lzwcai_terminal_temi/MqttManager.kt b/app/src/main/java/com/example/lzwcai_terminal_temi/MqttManager.kt index 890f34e..6ffe1de 100644 --- a/app/src/main/java/com/example/lzwcai_terminal_temi/MqttManager.kt +++ b/app/src/main/java/com/example/lzwcai_terminal_temi/MqttManager.kt @@ -203,6 +203,9 @@ class MqttManager( "stream" -> { val text = obj.optString("text", obj.optString("content", "")) val lang = obj.optString("lang", "") + scope.launch(Dispatchers.Main) { + (context as? MainActivity)?.markSpeechTaskActive() + } processStreamText(text, lang) } "repose" -> { @@ -210,9 +213,6 @@ class MqttManager( Log.i(TAG, "Repose command sent: $ok") } "stop" -> { - scope.launch(Dispatchers.Main) { - (context as? MainActivity)?.setCurrentTask("") - } navController.stop() pauseTts() } @@ -421,6 +421,9 @@ class MqttManager( if (!isTtsPaused) { processNextTts() } + if (!isTtsPaused && !isTtsBusy && ttsQueue.isEmpty() && speechBuffer.isEmpty()) { + (context as? MainActivity)?.clearSpeechTaskIfActive() + } } else -> {} }