Compare commits
5 Commits
0b51e63262
...
v1.0.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
531ec51fb6 | ||
|
|
e523bf756b | ||
|
|
ef72a2dc7f | ||
|
|
ef4fa24ba5 | ||
|
|
a1b2bdaa1c |
@@ -11,8 +11,8 @@ android {
|
|||||||
applicationId = "ru.ua1zbe.svxremote"
|
applicationId = "ru.ua1zbe.svxremote"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 6
|
versionCode = 7
|
||||||
versionName = "1.0.4"
|
versionName = "1.0.5"
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
@@ -21,6 +21,10 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buildFeatures {
|
||||||
|
buildConfig = true
|
||||||
|
}
|
||||||
|
|
||||||
lint {
|
lint {
|
||||||
checkReleaseBuilds = false
|
checkReleaseBuilds = false
|
||||||
abortOnError = false
|
abortOnError = false
|
||||||
|
|||||||
@@ -432,7 +432,13 @@ class MainActivity : Activity(), SvxService.Listener {
|
|||||||
|
|
||||||
/** Включить/выключить режим мониторинга групп с переподключением. */
|
/** Включить/выключить режим мониторинга групп с переподключением. */
|
||||||
private fun toggleMonitoring() {
|
private fun toggleMonitoring() {
|
||||||
monitoring = !monitoring
|
val enabling = !monitoring
|
||||||
|
if (enabling) {
|
||||||
|
showToast(R.string.monitoring_dev_warning, 10000)
|
||||||
|
} else {
|
||||||
|
showToast(R.string.monitor_off)
|
||||||
|
}
|
||||||
|
monitoring = enabling
|
||||||
priorityActive = false
|
priorityActive = false
|
||||||
updateMonitorButton()
|
updateMonitorButton()
|
||||||
updatePttEnabled()
|
updatePttEnabled()
|
||||||
@@ -444,6 +450,15 @@ class MainActivity : Activity(), SvxService.Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Окно с сообщением на заданное время (мс). */
|
||||||
|
private fun showToast(resId: Int, durationMs: Int = Toast.LENGTH_SHORT) {
|
||||||
|
val toast = Toast.makeText(this, resId, Toast.LENGTH_SHORT)
|
||||||
|
toast.show()
|
||||||
|
if (durationMs > Toast.LENGTH_SHORT) {
|
||||||
|
mainHandler.postDelayed({ toast.cancel() }, durationMs.toLong())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun updateMonitorButton() {
|
private fun updateMonitorButton() {
|
||||||
val active = monitoring
|
val active = monitoring
|
||||||
btnMonitor.imageTintList = ColorStateList.valueOf(
|
btnMonitor.imageTintList = ColorStateList.valueOf(
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package ru.ua1zbe.svxremote.proto
|
package ru.ua1zbe.svxremote.proto
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
import java.net.DatagramPacket
|
import java.net.DatagramPacket
|
||||||
import java.net.DatagramSocket
|
import java.net.DatagramSocket
|
||||||
import java.net.InetAddress
|
import java.net.InetAddress
|
||||||
@@ -7,7 +8,7 @@ import java.net.InetSocketAddress
|
|||||||
import java.net.Socket
|
import java.net.Socket
|
||||||
import java.net.SocketTimeoutException
|
import java.net.SocketTimeoutException
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
import android.util.Log
|
import ru.ua1zbe.svxremote.BuildConfig
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Клиент рефлектора SVXLink (протокол v2, авторизация AUTH_KEY, аудио Opus по UDP).
|
* Клиент рефлектора SVXLink (протокол v2, авторизация AUTH_KEY, аудио Opus по UDP).
|
||||||
@@ -50,7 +51,9 @@ class ReflectorClient(
|
|||||||
const val RECONNECT_DELAY_MS = 5000L
|
const val RECONNECT_DELAY_MS = 5000L
|
||||||
|
|
||||||
const val CLIENT_SW_INFO = "SVXHomyak"
|
const val CLIENT_SW_INFO = "SVXHomyak"
|
||||||
const val CLIENT_SW_VERSION = "1.0.0"
|
// Версия ПО передаётся на сервер для дашборда; берём из BuildConfig,
|
||||||
|
// чтобы не расходилась с versionName в build.gradle.kts
|
||||||
|
val CLIENT_SW_VERSION = BuildConfig.VERSION_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
data class Settings(
|
data class Settings(
|
||||||
|
|||||||
@@ -195,9 +195,11 @@ object MsgBuilder {
|
|||||||
return RcMessage(ReflectorProtocol.MSG_TG_MONITOR, w.toByteArray())
|
return RcMessage(ReflectorProtocol.MSG_TG_MONITOR, w.toByteArray())
|
||||||
}
|
}
|
||||||
|
|
||||||
/** MsgNodeInfo v2: JSON-строка с данными клиента (версия ПО и пр.). */
|
/** MsgNodeInfo v2: JSON-строка с данными клиента (версия ПО и пр.).
|
||||||
|
* Рефлектор вливает JSON в статус узла, дашборд показывает поле
|
||||||
|
* «swVer» (как у svxlink-узлов). */
|
||||||
fun nodeInfo(swInfo: String, swVersion: String): RcMessage {
|
fun nodeInfo(swInfo: String, swVersion: String): RcMessage {
|
||||||
val json = "{\"swInfo\":\"$swInfo\",\"swVersion\":\"$swVersion\"}"
|
val json = "{\"swInfo\":\"$swInfo\",\"swVer\":\"$swVersion\"}"
|
||||||
return RcMessage(ReflectorProtocol.MSG_NODE_INFO, BinWriter().str(json).toByteArray())
|
return RcMessage(ReflectorProtocol.MSG_NODE_INFO, BinWriter().str(json).toByteArray())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<string name="node_tg_suffix"> (группа %1$d)</string>
|
<string name="node_tg_suffix"> (группа %1$d)</string>
|
||||||
<string name="node_with_tg">%1$s — TG%2$d</string>
|
<string name="node_with_tg">%1$s — TG%2$d</string>
|
||||||
<string name="btn_save">Сохранить</string>
|
<string name="btn_save">Сохранить</string>
|
||||||
<string name="app_version">SVXhomyak — v1.0.4</string>
|
<string name="app_version">SVXhomyak — v1.0.5</string>
|
||||||
<string name="saved">Сохранено</string>
|
<string name="saved">Сохранено</string>
|
||||||
<string name="pref_callsign_hint">например UA1ZBE</string>
|
<string name="pref_callsign_hint">например UA1ZBE</string>
|
||||||
|
|
||||||
@@ -28,6 +28,8 @@
|
|||||||
<string name="app_title">SVXHomyak</string>
|
<string name="app_title">SVXHomyak</string>
|
||||||
<string name="btn_power">Выключить: отключиться и закрыть</string>
|
<string name="btn_power">Выключить: отключиться и закрыть</string>
|
||||||
<string name="btn_monitor">Мониторинг групп (нажмите, чтобы включить)</string>
|
<string name="btn_monitor">Мониторинг групп (нажмите, чтобы включить)</string>
|
||||||
|
<string name="monitoring_dev_warning">Функция находится в разработке. Может работать некорректно!</string>
|
||||||
|
<string name="monitor_off">Обычный режим</string>
|
||||||
<string name="btn_monitor_on">Мониторинг групп включен (нажмите, чтобы выключить)</string>
|
<string name="btn_monitor_on">Мониторинг групп включен (нажмите, чтобы выключить)</string>
|
||||||
<string name="status_monitoring">Мониторинг: %1$s</string>
|
<string name="status_monitoring">Мониторинг: %1$s</string>
|
||||||
<string name="talker_mon">Говорит: %1$s · TG%2$d</string>
|
<string name="talker_mon">Говорит: %1$s · TG%2$d</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user