fix: 在空闲检测逻辑中添加TTS状态检查
防止机器人在语音播报时触发空闲问候,避免语音重叠
This commit is contained in:
@@ -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 -> "早上好"
|
||||||
|
|||||||
Reference in New Issue
Block a user