diff --git a/apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt b/apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt index 04a7f154110..4f4aafc3c03 100644 --- a/apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt +++ b/apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt @@ -760,7 +760,7 @@ class NodeRuntime( prefs.setTalkEnabled(value) if (value) { // Tapping mic on interrupts any active TTS (barge-in) - talkMode.stopTts() + stopVoicePlayback() talkMode.ttsOnAllResponses = false scope.launch { talkMode.ensureChatSubscribed() } } @@ -782,12 +782,19 @@ class NodeRuntime( private fun stopActiveVoiceSession() { talkMode.ttsOnAllResponses = false - talkMode.stopTts() + stopVoicePlayback() micCapture.setMicEnabled(false) prefs.setTalkEnabled(false) externalAudioCaptureActive.value = false } + private fun stopVoicePlayback() { + talkMode.stopTts() + if (voiceReplySpeakerLazy.isInitialized()) { + voiceReplySpeaker.stopTts() + } + } + fun refreshGatewayConnection() { val endpoint = connectedEndpoint ?: run { diff --git a/apps/android/app/src/main/java/ai/openclaw/app/voice/MicCaptureManager.kt b/apps/android/app/src/main/java/ai/openclaw/app/voice/MicCaptureManager.kt index dcb7300d0ca..3c9367e4c35 100644 --- a/apps/android/app/src/main/java/ai/openclaw/app/voice/MicCaptureManager.kt +++ b/apps/android/app/src/main/java/ai/openclaw/app/voice/MicCaptureManager.kt @@ -244,7 +244,7 @@ class MicCaptureManager( pendingRunId = null pendingAssistantEntryId = null _isSending.value = false - if (messageQueue.isNotEmpty()) { + if (hasQueuedMessages()) { _statusText.value = queuedWaitingStatus() } } @@ -352,7 +352,7 @@ class MicCaptureManager( _statusText.value = when { _isSending.value -> "Listening · sending queued voice" - messageQueue.isNotEmpty() -> "Listening · ${messageQueue.size} queued" + hasQueuedMessages() -> "Listening · ${queuedMessageCount()} queued" else -> "Listening" } _isListening.value = true