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
Удерживайте кнопку, чтобы говорить