From cd575979750421781fdfad363fcd5a9677eb3a65 Mon Sep 17 00:00:00 2001 From: evgeny Date: Sat, 3 Oct 2026 01:30:31 +0300 Subject: [PATCH] Expose radio VAD gain limit in Android settings --- .../java/com/utun/chat/ui/screens/SettingsScreen.kt | 10 ++++++++++ .../app/src/main/res/values-ru/strings.xml | 2 ++ .../app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 14 insertions(+) diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/SettingsScreen.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/SettingsScreen.kt index 74f10747..cc851fc3 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/SettingsScreen.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/SettingsScreen.kt @@ -570,6 +570,7 @@ private fun RadioSettingsTab() { var vadEnabled by remember { mutableStateOf(provider.getInt("radio.vad_enabled") != 0) } var vadThreshold by remember { mutableStateOf(provider.getInt("radio.vad_threshold")) } var vadHangover by remember { mutableStateOf(provider.getInt("radio.vad_hangover_ms")) } + var vadCompMaxGain by remember { mutableStateOf(provider.getInt("radio.vad_compressor_max_gain_db")) } val vadActive by RadioAudioEngine.instance().vadActiveFlow.collectAsState() Text(stringResource(R.string.radio_vad), style = MaterialTheme.typography.titleMedium) Row(verticalAlignment = Alignment.CenterVertically) { @@ -604,6 +605,15 @@ private fun RadioSettingsTab() { RadioAudioEngine.instance().reconfigure() } }) + LabeledSlider(stringResource(R.string.vad_max_gain), vadCompMaxGain.toFloat(), 1f..60f, 58, "${vadCompMaxGain} dB", + { vadCompMaxGain = it.toInt() }, onValueChangeFinished = { + scope.launch { + provider.setValue("radio.vad_compressor_max_gain_db", vadCompMaxGain.toString()) + NativeLib.setChatSetting("radio_vad_compressor_max_gain_db", vadCompMaxGain.toString()) + RadioAudioEngine.instance().reconfigure() + } + }) + Text(stringResource(R.string.vad_compressor_hint), style = MaterialTheme.typography.bodySmall) HorizontalDivider(Modifier.padding(vertical = 4.dp)) /* ── Volume-кнопки PTT ── */ diff --git a/tools/chatgui-android/app/src/main/res/values-ru/strings.xml b/tools/chatgui-android/app/src/main/res/values-ru/strings.xml index 4afc902d..3dabce5f 100644 --- a/tools/chatgui-android/app/src/main/res/values-ru/strings.xml +++ b/tools/chatgui-android/app/src/main/res/values-ru/strings.xml @@ -210,6 +210,8 @@ "Работает 15 минут при включённом экране. При следующем включении экрана запускается автоматически." "Порог речи:" "Задержка после тишины:" + "Макс. усиление перед VAD:" + "Включение и остальные параметры общие с компрессором рации. Этот предел усиления влияет только на определение речи." "%1$s мс" "Кнопки громкости (удержание) — передача" "PTT-кнопка поверх приложений" diff --git a/tools/chatgui-android/app/src/main/res/values/strings.xml b/tools/chatgui-android/app/src/main/res/values/strings.xml index 5517e926..4bb16e60 100644 --- a/tools/chatgui-android/app/src/main/res/values/strings.xml +++ b/tools/chatgui-android/app/src/main/res/values/strings.xml @@ -210,6 +210,8 @@ "Runs for 15 minutes while the screen is on. Starts automatically when the screen turns on again." "Speech threshold:" "Delay after silence:" + "Max gain before VAD:" + "Uses the radio compressor switch and other settings. This gain limit affects voice detection only." "%1$s ms" "Hold volume buttons to transmit" "PTT button over other apps"