README: описан функционал — запись в OGG, скрытые настройки звука, мониторинг, PTT в стиле Zello, строка говорящего
This commit is contained in:
43
README.md
43
README.md
@@ -7,12 +7,37 @@ Android-клиент для подключения к рефлекторам **S
|
|||||||
- Подключение к рефлектору SVXLink по протоколу v2 с авторизацией по AUTH_KEY
|
- Подключение к рефлектору SVXLink по протоколу v2 с авторизацией по AUTH_KEY
|
||||||
- Выбор группы вещания (TG) — по умолчанию 11
|
- Выбор группы вещания (TG) — по умолчанию 11
|
||||||
- Голосовая связь в формате **Opus** (8 кГц, моно) через UDP
|
- Голосовая связь в формате **Opus** (8 кГц, моно) через UDP
|
||||||
- Кнопка PTT (Push-To-Talk) — удерживайте, чтобы говорить
|
- Кнопка PTT (Push-To-Talk) в стиле Zello — крупная, с градиентом и тенью; удерживайте, чтобы говорить
|
||||||
- Индикаторы уровня передачи и приёма
|
- Индикаторы уровня передачи (микрофон) и приёма (S-метры)
|
||||||
- Отображение текущего говорящего
|
- **Статистика приёма** (потери, %, и джиттер, мс) — включается в скрытых настройках звука
|
||||||
|
- **Выбор битрейта передачи** — Авто (адаптация под качество канала) либо фиксированный 6–32 кбит/с (скрытые настройки звука)
|
||||||
|
- **Мониторинг групп** — кнопка наушников: прослушивание выбранных групп с автоматическим возвратом к базовой после паузы
|
||||||
|
- **Запись приёма в OGG** с пропуском тишины (подробности ниже)
|
||||||
|
- Строка текущего говорящего между блоками экрана:
|
||||||
|
- при приёме — `Говорит UA1ZBE-M TG12`
|
||||||
|
- без приёма — `UA1ZBE-M TG12` (последний говоривший)
|
||||||
- Автоматическое переподключение при обрыве связи
|
- Автоматическое переподключение при обрыве связи
|
||||||
|
- Уведомления о входе/выходе участников (опционально)
|
||||||
- Позывной регистронезависимый: `ua1zbe-m` автоматически преобразуется в `UA1ZBE-M` для отправки на сервер
|
- Позывной регистронезависимый: `ua1zbe-m` автоматически преобразуется в `UA1ZBE-M` для отправки на сервер
|
||||||
|
|
||||||
|
## Запись приёма
|
||||||
|
|
||||||
|
- Кнопка записи расположена между позывным и кнопкой мониторинга групп.
|
||||||
|
- **Короткое нажатие** — начать/остановить запись. Файл сохраняется в
|
||||||
|
`Android/data/ru.ua1zbe.svxremote/files/recordings/rec_ГГГГ-ММ-ДД_ЧЧ-ММ-СС.ogg`.
|
||||||
|
- Записывается только реальный приём: паузы в эфире (тишина) в файл не попадают,
|
||||||
|
реплики склеиваются без разрывов.
|
||||||
|
- **Удержание кнопки 3 секунды** — открывается список записей: воспроизведение
|
||||||
|
(повторный тап останавливает) и удаление с подтверждением. Если записей нет —
|
||||||
|
выводится подсказка.
|
||||||
|
|
||||||
|
## Скрытые настройки звука
|
||||||
|
|
||||||
|
Открываются тройным тапом по заголовку «SVXHomyak» на главном экране. Позволяют:
|
||||||
|
|
||||||
|
- включить/выключить отображение статистики приёма (потери/джиттер);
|
||||||
|
- выбрать битрейт передачи (Авто или 6–32 кбит/с).
|
||||||
|
|
||||||
## Требования
|
## Требования
|
||||||
|
|
||||||
- Android 8.0 (API 26) и выше
|
- Android 8.0 (API 26) и выше
|
||||||
@@ -43,16 +68,24 @@ Android-клиент для подключения к рефлекторам **S
|
|||||||
|
|
||||||
APK появится в `app/build/outputs/apk/debug/app-debug.apk`.
|
APK появится в `app/build/outputs/apk/debug/app-debug.apk`.
|
||||||
|
|
||||||
|
Для сборки релизного (подписанного) APK:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gradlew :app:assembleRelease
|
||||||
|
# далее выровнять и подписать через build-tools (zipalign + apksigner)
|
||||||
|
```
|
||||||
|
|
||||||
Требования: JDK 17, Android SDK (compileSdk 34).
|
Требования: JDK 17, Android SDK (compileSdk 34).
|
||||||
|
|
||||||
## Структура проекта
|
## Структура проекта
|
||||||
|
|
||||||
- `app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt` — основной экран
|
- `app/src/main/java/ru/ua1zbe/svxremote/MainActivity.kt` — основной экран и логика UI
|
||||||
- `app/src/main/java/ru/ua1zbe/svxremote/SettingsActivity.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/ReflectorClient.kt` — клиент рефлектора (TCP + UDP)
|
||||||
- `app/src/main/java/ru/ua1zbe/svxremote/proto/ReflectorProtocol.kt` — бинарный протокол svxreflector v2
|
- `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/audio/OpusEngine.kt` — кодирование/декодирование Opus через MediaCodec
|
||||||
- `app/src/main/java/ru/ua1zbe/svxremote/ui/` — кнопка PTT и индикатор уровня
|
- `app/src/main/java/ru/ua1zbe/svxremote/audio/RxRecorder.kt` — запись приёма в OGG (MediaCodec + MediaMuxer)
|
||||||
|
- `app/src/main/java/ru/ua1zbe/svxremote/ui/` — кнопка PTT (стиль Zello), S-метр, индикатор уровня
|
||||||
- `app/src/test/java/ru/ua1zbe/svxremote/` — юнит-тесты протокола и рукопожатия
|
- `app/src/test/java/ru/ua1zbe/svxremote/` — юнит-тесты протокола и рукопожатия
|
||||||
|
|
||||||
## Тесты
|
## Тесты
|
||||||
|
|||||||
Reference in New Issue
Block a user