Update monitored TG when switching group live

This commit is contained in:
ua1zbe
2026-08-17 11:14:41 +03:00
parent 3109c52bbd
commit ee61d3ef6f
3 changed files with 23 additions and 0 deletions

View File

@@ -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 =

View File

@@ -93,6 +93,11 @@ class SvxService : Service(), ReflectorClient.Callbacks {
Thread { client.selectGroup(tg) }.start()
}
fun setMonitorTgs(tgs: List<Long>) {
// Сеть запрещена в главном потоке (NetworkOnMainThreadException)
Thread { client.setMonitorTgs(tgs) }.start()
}
fun startTx() {
engine.startCapture { packet -> client.sendAudio(packet) }
}

View File

@@ -176,6 +176,21 @@ class ReflectorClient(
}
}
/** Переключить группы мониторинга на живом соединении. */
fun setMonitorTgs(tgs: List<Long>) {
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