fix: 在空闲检测逻辑中添加TTS状态检查

防止机器人在语音播报时触发空闲问候,避免语音重叠
This commit is contained in:
2026-04-23 15:30:42 +08:00
parent f89bce552a
commit c1e9ee8d34

View File

@@ -102,6 +102,7 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
private var autoRechargeJob: Job? = null private var autoRechargeJob: Job? = null
private var latestYaw: Float? = null private var latestYaw: Float? = null
private var receptionAnchorYaw: Float? = null private var receptionAnchorYaw: Float? = null
private var isTtsSpeaking: Boolean = false
private var pendingReceptionReturnWorkflow: Boolean = false private var pendingReceptionReturnWorkflow: Boolean = false
private var lastWorkflowConfigRefreshAt: Long = 0L private var lastWorkflowConfigRefreshAt: Long = 0L
private lateinit var telemetryManager: TelemetryManager private lateinit var telemetryManager: TelemetryManager
@@ -340,6 +341,7 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
connectionCoordinator.handleTtsStatusChange(ttsRequest) connectionCoordinator.handleTtsStatusChange(ttsRequest)
when (ttsRequest.status) { when (ttsRequest.status) {
TtsRequest.Status.STARTED -> { TtsRequest.Status.STARTED -> {
isTtsSpeaking = true
Log.i("MainActivity", "TTS started") Log.i("MainActivity", "TTS started")
binding.animatedEmojiView.currentExpression = AnimatedEmojiView.Expression.TALKING binding.animatedEmojiView.currentExpression = AnimatedEmojiView.Expression.TALKING
liveKitManager?.setTtsMute(true) liveKitManager?.setTtsMute(true)
@@ -347,6 +349,7 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
TtsRequest.Status.COMPLETED, TtsRequest.Status.COMPLETED,
TtsRequest.Status.CANCELED, TtsRequest.Status.CANCELED,
TtsRequest.Status.NOT_ALLOWED -> { TtsRequest.Status.NOT_ALLOWED -> {
isTtsSpeaking = false
Log.i("MainActivity", "TTS finished: ${ttsRequest.speech}") Log.i("MainActivity", "TTS finished: ${ttsRequest.speech}")
if (taskController.currentTask == "patrol") { if (taskController.currentTask == "patrol") {
binding.animatedEmojiView.currentExpression = AnimatedEmojiView.Expression.ANGRY binding.animatedEmojiView.currentExpression = AnimatedEmojiView.Expression.ANGRY
@@ -356,6 +359,7 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
liveKitManager?.setTtsMute(false) liveKitManager?.setTtsMute(false)
} }
TtsRequest.Status.ERROR -> { TtsRequest.Status.ERROR -> {
isTtsSpeaking = false
Log.e("MainActivity", "TTS error: ${ttsRequest.speech}") Log.e("MainActivity", "TTS error: ${ttsRequest.speech}")
binding.animatedEmojiView.currentExpression = AnimatedEmojiView.Expression.SAD binding.animatedEmojiView.currentExpression = AnimatedEmojiView.Expression.SAD
liveKitManager?.setTtsMute(false) liveKitManager?.setTtsMute(false)
@@ -518,7 +522,7 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
} }
} }
} }
if (isIdleTask && !atHomeBase && state == DETECTED && !isSpecialState) { if (isIdleTask && !atHomeBase && state == DETECTED && !isSpecialState && !isTtsSpeaking) {
val hour = java.util.Calendar.getInstance().get(java.util.Calendar.HOUR_OF_DAY) val hour = java.util.Calendar.getInstance().get(java.util.Calendar.HOUR_OF_DAY)
val greeting = when (hour) { val greeting = when (hour) {
in 6..11 -> "早上好" in 6..11 -> "早上好"