2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00
2025-11-30 00:58:24 +03:00

Грузоблочный тренажер - Android приложение

Android приложение для управления грузоблочным тренажером с ESP32 микроконтроллером.

Функциональность

  1. Регистрация участника - добавление и выбор участника тренировки
  2. Выбор режима упражнений - выбор готового сценария или создание индивидуального
  3. Пуск и останов упражнения - управление тренировкой
  4. Подсчет подъемов - в режиме на время считаются выполненные подъемы
  5. Отсчет времени - в режиме на количество отсчитывается время выполнения
  6. Кардиодатчик - отображение показаний пульса в реальном времени через Bluetooth
  7. Печать отчетов - вывод результатов тренировки на принтер

Технологии

  • Kotlin
  • Jetpack Compose
  • Room Database
  • WebSocket (OkHttp) для связи с ESP32
  • Bluetooth LE для кардиодатчика
  • Navigation Component

Настройка

WebSocket подключение к ESP32

В файле MainActivity.kt измените URL WebSocket:

val websocketUrl = "ws://192.168.1.100:81" // Замените на IP вашего ESP32

ESP32 должен отправлять сообщения в формате JSON:

{"position": "top"}  // или "bottom"

Bluetooth кардиодатчик

Приложение автоматически сканирует и подключается к Bluetooth устройствам с Heart Rate Service (UUID: 0000180d-0000-1000-8000-00805f9b34fb).

При первом запуске приложение запросит разрешения:

  • Bluetooth
  • Location (требуется для Bluetooth LE сканирования на Android 12+)

Структура проекта

app/src/main/java/ru/kgeu/training/
├── data/
│   ├── dao/              # Data Access Objects для Room
│   ├── database/         # Room Database
│   ├── model/            # Модели данных
│   └── repository/       # Репозиторий для работы с данными
├── network/
│   └── WebSocketClient.kt # WebSocket клиент для ESP32
├── bluetooth/
│   └── HeartRateMonitor.kt # Bluetooth сервис для кардиодатчика
├── ui/
│   ├── navigation/       # Навигация
│   ├── screen/           # UI экраны
│   ├── theme/            # Тема приложения
│   └── viewmodel/        # ViewModels
└── util/
    └── PrintUtil.kt      # Утилита для печати

Режимы упражнений

Режим на время

  • Устанавливается целевое время (в секундах)
  • Считается количество выполненных подъемов
  • Тренировка завершается по истечении времени

Режим на количество

  • Устанавливается целевое количество подъемов
  • Отсчитывается время выполнения
  • Тренировка завершается при достижении цели

База данных

Приложение использует Room Database для хранения:

  • Участников тренировок
  • Сценариев упражнений (готовых и пользовательских)
  • Сессий тренировок с результатами

Печать

Функция печати использует стандартную систему печати Android и поддерживает:

  • Печать на принтеры через Wi-Fi
  • Сохранение в PDF
  • Отправку по email

Требования

  • Android 8.0 (API 26) или выше
  • Поддержка Bluetooth LE
  • Подключение к сети для WebSocket

Разработка

Для сборки проекта используйте:

./gradlew assembleDebug

Для установки на устройство:

./gradlew installDebug
Description
No description provided
Readme 186 KiB
first release Latest
2026-01-22 13:05:51 +03:00
Languages
Kotlin 100%