Initial commit: SVXHomyak - Android client for SVXLink reflectors

This commit is contained in:
ua1zbe
2026-08-13 13:33:17 +03:00
commit f924c4cc4a
29 changed files with 2528 additions and 0 deletions

66
README.md Normal file
View File

@@ -0,0 +1,66 @@
# SVXHomyak
Android-клиент для подключения к рефлекторам **SVXLink** (svxreflector) — слушайте и участвуйте в групповых переговорах (TG) прямо со смартфона.
## Возможности
- Подключение к рефлектору SVXLink по протоколу v2 с авторизацией по AUTH_KEY
- Выбор группы вещания (TG) — по умолчанию 11
- Голосовая связь в формате **Opus** (8 кГц, моно) через UDP
- Кнопка PTT (Push-To-Talk) — удерживайте, чтобы говорить
- Индикаторы уровня передачи и приёма
- Отображение текущего говорящего
- Автоматическое переподключение при обрыве связи
- Позывной регистронезависимый: `ua1zbe-m` автоматически преобразуется в `UA1ZBE-M` для отправки на сервер
## Требования
- Android 8.0 (API 26) и выше
- Доступ к сети и микрофону
- Рефлектор SVXLink с включённой поддержкой протокола v2 (AUTH_KEY)
## Установка
Скачайте последний APK со страницы [Releases](https://git2.ua1zbe.ru/ua1zbe/svxhomyak/releases) и установите его на устройство (разрешите установку из неизвестных источников).
## Использование
1. Откройте **Настройки** (иконка шестерёнки).
2. Укажите:
- **Сервер** — адрес рефлектора (хост или IP)
- **Порт** — по умолчанию `5300`
- **Позывной** — ваш позывной, например `UA1ZBE-M`
- **Пароль (AUTH_KEY)** — ключ доступа к рефлектору
- **Группа вещания (TG)** — номер группы
3. Нажмите **Сохранить**, затем **Подключиться**.
4. Для передачи удерживайте кнопку PTT.
## Сборка из исходников
```bash
./gradlew :app:assembleDebug
```
APK появится в `app/build/outputs/apk/debug/app-debug.apk`.
Требования: JDK 17, Android SDK (compileSdk 34).
## Структура проекта
- `app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt` — основной экран
- `app/src/main/java/ru/ua1zbe/svxremote/SettingsActivity.kt` — настройки подключения
- `app/src/main/java/ru/ua1zbe/svxremote/proto/ReflectorClient.kt` — клиент рефлектора (TCP + UDP)
- `app/src/main/java/ru/ua1zbe/svxremote/proto/ReflectorProtocol.kt` — бинарный протокол svxreflector v2
- `app/src/main/java/ru/ua1zbe/svxremote/audio/OpusEngine.kt` — кодирование/декодирование Opus через MediaCodec
- `app/src/main/java/ru/ua1zbe/svxremote/ui/` — кнопка PTT и индикатор уровня
- `app/src/test/java/ru/ua1zbe/svxremote/` — юнит-тесты протокола и рукопожатия
## Тесты
```bash
./gradlew :app:testDebugUnitTest
```
## Лицензия
Проект распространяется без ограничений (для радиолюбительских целей).