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 -> {} }