From 37ecd0fa6e30a9a4d6ce834a013ee341c8d68d45 Mon Sep 17 00:00:00 2001 From: ua1zbe Date: Tue, 18 Aug 2026 13:16:04 +0300 Subject: [PATCH] Separate hidden audio settings screen (mic gain, RX buffer, jitter) via triple-tap; remove from main settings --- app/src/main/AndroidManifest.xml | 6 + .../ua1zbe/svxremote/AudioSettingsActivity.kt | 70 ++++++++++ .../java/ru/ua1zbe/svxremote/MainActivity.kt | 2 +- .../ru/ua1zbe/svxremote/SettingsActivity.kt | 19 --- .../java/ru/ua1zbe/svxremote/SvxService.kt | 2 + .../ru/ua1zbe/svxremote/audio/OpusEngine.kt | 13 +- .../java/ru/ua1zbe/svxremote/prefs/Prefs.kt | 18 +++ .../res/layout/activity_audio_settings.xml | 127 ++++++++++++++++++ app/src/main/res/layout/activity_settings.xml | 40 ------ app/src/main/res/values/strings.xml | 7 +- 10 files changed, 236 insertions(+), 68 deletions(-) create mode 100644 app/src/main/java/ru/ua1zbe/svxremote/AudioSettingsActivity.kt create mode 100644 app/src/main/res/layout/activity_audio_settings.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2e36727..bf9798d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,6 +25,12 @@ android:exported="false" android:label="@string/settings_title" /> + + (R.id.seek_mic_gain) + val lblMicGain = findViewById(R.id.lbl_mic_gain_value) + val seekRxBuffer = findViewById(R.id.seek_rx_buffer) + val lblRxBuffer = findViewById(R.id.lbl_rx_buffer_value) + val seekJitter = findViewById(R.id.seek_jitter) + val lblJitter = findViewById(R.id.lbl_jitter_value) + + fun updateMicGainLabel() { + lblMicGain.text = "${100 + seekMicGain.progress * 10}%" + } + + fun updateRxBufferLabel() { + lblRxBuffer.text = "${100 + seekRxBuffer.progress * 20} мс" + } + + fun updateJitterLabel() { + lblJitter.text = "${seekJitter.progress * 20} мс" + } + + seekMicGain.progress = ((Prefs.micGain(this) - 1.0f) * 10).toInt().coerceIn(0, 40) + seekRxBuffer.progress = ((Prefs.rxBufferMs(this) - 100) / 20).coerceIn(0, 25) + seekJitter.progress = (Prefs.rxJitterMs(this) / 20).coerceIn(0, 20) + updateMicGainLabel() + updateRxBufferLabel() + updateJitterLabel() + + val listener = object : SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + updateMicGainLabel() + updateRxBufferLabel() + updateJitterLabel() + } + + override fun onStartTrackingTouch(seekBar: SeekBar) {} + override fun onStopTrackingTouch(seekBar: SeekBar) {} + } + seekMicGain.setOnSeekBarChangeListener(listener) + seekRxBuffer.setOnSeekBarChangeListener(listener) + seekJitter.setOnSeekBarChangeListener(listener) + + findViewById