



























@@ -21,6 +21,8 @@ import ai.openclaw.app.ui.design.ClawStatusPill
2121import ai.openclaw.app.ui.design.ClawTextBadge
2222import ai.openclaw.app.ui.design.ClawTextField
2323import ai.openclaw.app.ui.design.ClawTheme
24+import android.media.AudioManager
25+import android.media.ToneGenerator
2426import androidx.compose.foundation.BorderStroke
2527import androidx.compose.foundation.background
2628import androidx.compose.foundation.layout.Arrangement
@@ -402,7 +404,7 @@ private fun V2VoiceSettingsScreen(
402404 )
403405Text(text = "Audio Test", style = ClawTheme.type.section, color = ClawTheme.colors.text)
404406Text(text = "Check that OpenClaw can speak clearly on this phone.", style = ClawTheme.type.body, color = ClawTheme.colors.textMuted)
405-V2SettingsWaveformPanel(active = speakerEnabled)
407+V2SettingsWaveformPanel(active = speakerEnabled, onClick = ::playVoiceSetupTone)
406408V2VoiceSetupActionRow(
407409 title = if (speakerEnabled) "Mute speaker" else "Enable speaker",
408410 subtitle = if (speakerEnabled) "Replies play aloud" else "Assistant speech muted",
@@ -492,15 +494,21 @@ private fun V2VoiceSetupActionRow(
492494 .background(if (ready) ClawTheme.colors.success else ClawTheme.colors.textSubtle, CircleShape),
493495 )
494496Text(text = statusText, style = ClawTheme.type.body, color = ClawTheme.colors.textMuted, maxLines = 1)
495-Icon(imageVector = Icons.AutoMirrored.Filled.KeyboardArrowRight, contentDescription = null, modifier = Modifier.size(20.dp), tint = ClawTheme.colors.textMuted)
497+if (onClick != null) {
498+Icon(imageVector = Icons.AutoMirrored.Filled.KeyboardArrowRight, contentDescription = null, modifier = Modifier.size(20.dp), tint = ClawTheme.colors.textMuted)
499+ }
496500 }
497501 }
498502 }
499503}
500504501505@Composable
502-private fun V2SettingsWaveformPanel(active: Boolean) {
506+private fun V2SettingsWaveformPanel(
507+active: Boolean,
508+onClick: () -> Unit,
509+) {
503510Surface(
511+ onClick = onClick,
504512 modifier = Modifier.fillMaxWidth().height(76.dp),
505513 shape = RoundedCornerShape(ClawTheme.radii.panel),
506514 color = ClawTheme.colors.surface,
@@ -527,6 +535,10 @@ private fun V2SettingsWaveformPanel(active: Boolean) {
527535 }
528536}
529537538+private fun playVoiceSetupTone() {
539+ToneGenerator(AudioManager.STREAM_MUSIC, 80).startTone(ToneGenerator.TONE_PROP_BEEP, 250)
540+}
541+530542@Composable
531543private fun V2NotificationSettingsScreen(
532544viewModel: MainViewModel,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。