fix: 修复语音任务状态管理问题
在收到流式语音指令时,立即标记当前任务为语音任务,防止被其他任务覆盖 在TTS队列和缓冲区清空且无语音播放时,自动清除语音任务标记 将onReposeStatusChanged方法移至文件末尾以保持代码结构清晰
This commit is contained in:
@@ -380,23 +380,15 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onReposeStatusChanged(status: Int, description: String) {
|
fun markSpeechTaskActive() {
|
||||||
when (status) {
|
if (currentTask.isEmpty() || currentTask == "speech") {
|
||||||
OnReposeStatusChangedListener.REPOSING_COMPLETE -> {
|
setCurrentTask("speech")
|
||||||
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 clearSpeechTaskIfActive() {
|
||||||
|
if (currentTask == "speech") {
|
||||||
|
setCurrentTask("")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -463,4 +455,24 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
|
|||||||
outState.putString("lastArrivalLocation", lastArrivalLocation)
|
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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -203,6 +203,9 @@ class MqttManager(
|
|||||||
"stream" -> {
|
"stream" -> {
|
||||||
val text = obj.optString("text", obj.optString("content", ""))
|
val text = obj.optString("text", obj.optString("content", ""))
|
||||||
val lang = obj.optString("lang", "")
|
val lang = obj.optString("lang", "")
|
||||||
|
scope.launch(Dispatchers.Main) {
|
||||||
|
(context as? MainActivity)?.markSpeechTaskActive()
|
||||||
|
}
|
||||||
processStreamText(text, lang)
|
processStreamText(text, lang)
|
||||||
}
|
}
|
||||||
"repose" -> {
|
"repose" -> {
|
||||||
@@ -210,9 +213,6 @@ class MqttManager(
|
|||||||
Log.i(TAG, "Repose command sent: $ok")
|
Log.i(TAG, "Repose command sent: $ok")
|
||||||
}
|
}
|
||||||
"stop" -> {
|
"stop" -> {
|
||||||
scope.launch(Dispatchers.Main) {
|
|
||||||
(context as? MainActivity)?.setCurrentTask("")
|
|
||||||
}
|
|
||||||
navController.stop()
|
navController.stop()
|
||||||
pauseTts()
|
pauseTts()
|
||||||
}
|
}
|
||||||
@@ -421,6 +421,9 @@ class MqttManager(
|
|||||||
if (!isTtsPaused) {
|
if (!isTtsPaused) {
|
||||||
processNextTts()
|
processNextTts()
|
||||||
}
|
}
|
||||||
|
if (!isTtsPaused && !isTtsBusy && ttsQueue.isEmpty() && speechBuffer.isEmpty()) {
|
||||||
|
(context as? MainActivity)?.clearSpeechTaskIfActive()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user