diff --git a/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt b/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt index b87cdbf..be9a847 100644 --- a/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt +++ b/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt @@ -55,6 +55,7 @@ class MainActivity : Activity(), SvxService.Listener { private lateinit var lblTg: TextView private lateinit var lblTalkerTitle: TextView private lateinit var lblTalker: TextView + private lateinit var lblDuplex: TextView private lateinit var lblPttHint: TextView private lateinit var lblTxState: TextView private lateinit var lblConnectHint: TextView @@ -131,6 +132,7 @@ class MainActivity : Activity(), SvxService.Listener { lblSubtitle = findViewById(R.id.lbl_subtitle) lblTalkerTitle = findViewById(R.id.lbl_talker_title) lblTalker = findViewById(R.id.lbl_talker) + lblDuplex = findViewById(R.id.lbl_duplex) lblPttHint = findViewById(R.id.lbl_ptt_hint) lblTxState = findViewById(R.id.lbl_tx_state) lblConnectHint = findViewById(R.id.lbl_connect_hint) @@ -236,6 +238,7 @@ class MainActivity : Activity(), SvxService.Listener { } lblPttHint.text = getString(R.string.ptt_talking) lblTxState.text = getString(R.string.status_big_talking) + showDuplex(getString(R.string.duplex_tx), R.color.danger, null) svc?.startTx() } @@ -246,6 +249,7 @@ class MainActivity : Activity(), SvxService.Listener { lblTxState.text = if (connected) getString(R.string.status_big_connected) else getString(R.string.status_big_disconnected) + hideDuplex() } }) @@ -407,15 +411,14 @@ class MainActivity : Activity(), SvxService.Listener { // Во время своей передачи группу не меняем. if (!pttButton.isPressed2) { svc?.selectGroup(tg) - lblTalkerTitle.text = getString(R.string.talker_mon, callsign, tg) - lblTalkerTitle.setTextColor(getColor(R.color.text_secondary)) - lblTalker.text = callsign } resetMonitorIdle() - } else { - lblTalkerTitle.text = getString(R.string.talker_now, callsign) - lblTalkerTitle.setTextColor(getColor(R.color.text_secondary)) - lblTalker.text = callsign + } + lblTalkerTitle.text = getString(R.string.talker_now, tg) + lblTalkerTitle.setTextColor(getColor(R.color.text_secondary)) + lblTalker.text = callsign + if (!pttButton.isPressed2) { + showDuplex(getString(R.string.duplex_rx), R.color.accent, DUPLEX_RX_HIDE_MS) } } } @@ -483,6 +486,10 @@ class MainActivity : Activity(), SvxService.Listener { micMeter.setLevel(level) } else { // SRC_SPEAKER rxMeter.setLevel(level) + // «RX» пока идёт голос; при своей передаче не показываем + if (!pttButton.isPressed2 && level > 0.03f) { + showDuplex(getString(R.string.duplex_rx), R.color.accent, DUPLEX_RX_HIDE_MS) + } // Голос на текущей группе — откладываем возврат ко всем группам if (monitoring && connected && level > 0.03f) { resetMonitorIdle() @@ -504,6 +511,26 @@ class MainActivity : Activity(), SvxService.Listener { mainHandler.postDelayed(task, MONITOR_IDLE_MS) } + // ---------- Индикатор RX/TX ---------- + private val DUPLEX_RX_HIDE_MS = 1500L + private var duplexHideTask: Runnable? = null + + private fun showDuplex(text: String, colorRes: Int, hideAfterMs: Long?) { + lblDuplex.text = text + lblDuplex.setTextColor(getColor(colorRes)) + lblDuplex.visibility = View.VISIBLE + duplexHideTask?.let { mainHandler.removeCallbacks(it) } + if (hideAfterMs != null) { + val t = Runnable { lblDuplex.visibility = View.INVISIBLE } + duplexHideTask = t + mainHandler.postDelayed(t, hideAfterMs) + } + } + + private fun hideDuplex() { + duplexHideTask?.let { mainHandler.removeCallbacks(it) } + lblDuplex.visibility = View.INVISIBLE + } override fun onError(detail: String) { mainHandler.post { toast(detail) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 25207b8..140db09 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -205,6 +205,17 @@ android:singleLine="true" android:ellipsize="end" /> + + + Обычный режим Мониторинг групп включен (нажмите, чтобы выключить) Мониторинг: %1$s - Говорит: %1$s · TG%2$d + Говорит TG%1$d + RX + TX DISCONNECTED CONNECTED ПЕРЕДАЧА @@ -69,7 +71,6 @@ Отключиться — - Последний: %1$s группа %1$d Удерживайте кнопку, чтобы говорить