diff --git a/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt b/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt index 48060fd..92321ce 100644 --- a/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt +++ b/app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt @@ -554,6 +554,9 @@ class MainActivity : Activity(), SvxService.Listener { Prefs.save(this, settings) refreshUi() svc?.selectGroup(tg) + if (!monitoring) { + svc?.setMonitorTgs(listOf(tg)) + } } private fun monitorTgLabel(): String = diff --git a/app/src/main/java/ru/ua1zbe/svxremote/SvxService.kt b/app/src/main/java/ru/ua1zbe/svxremote/SvxService.kt index 2e889ce..e3d200c 100644 --- a/app/src/main/java/ru/ua1zbe/svxremote/SvxService.kt +++ b/app/src/main/java/ru/ua1zbe/svxremote/SvxService.kt @@ -93,6 +93,11 @@ class SvxService : Service(), ReflectorClient.Callbacks { Thread { client.selectGroup(tg) }.start() } + fun setMonitorTgs(tgs: List) { + // Сеть запрещена в главном потоке (NetworkOnMainThreadException) + Thread { client.setMonitorTgs(tgs) }.start() + } + fun startTx() { engine.startCapture { packet -> client.sendAudio(packet) } } diff --git a/app/src/main/java/ru/ua1zbe/svxremote/proto/ReflectorClient.kt b/app/src/main/java/ru/ua1zbe/svxremote/proto/ReflectorClient.kt index 6415614..5508ad4 100644 --- a/app/src/main/java/ru/ua1zbe/svxremote/proto/ReflectorClient.kt +++ b/app/src/main/java/ru/ua1zbe/svxremote/proto/ReflectorClient.kt @@ -176,6 +176,21 @@ class ReflectorClient( } } + /** Переключить группы мониторинга на живом соединении. */ + fun setMonitorTgs(tgs: List) { + val sock = tcpSocket + if (sock == null || !running.get()) { + Log.d(TAG, "setMonitorTgs $tgs skipped (sock=${sock != null} running=${running.get()})") + return + } + try { + Log.d(TAG, "setMonitorTgs $tgs") + sendTcp(sock, MsgBuilder.tgMonitor(tgs)) + } catch (e: Exception) { + Log.w(TAG, "setMonitorTgs failed: ${e.javaClass.simpleName}: ${e.message}") + } + } + /** Конец передачи. */ fun sendAudioFlush() { val sock = udpSocket