115 lines
4.5 KiB
Markdown
115 lines
4.5 KiB
Markdown
# Грузоблочный тренажер - 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:
|
||
|
||
```kotlin
|
||
val websocketUrl = "ws://192.168.1.100:81" // Замените на IP вашего ESP32
|
||
```
|
||
|
||
ESP32 должен отправлять сообщения в формате JSON:
|
||
```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
|
||
|
||
## Разработка
|
||
|
||
Для сборки проекта используйте:
|
||
|
||
```bash
|
||
./gradlew assembleDebug
|
||
```
|
||
|
||
Для установки на устройство:
|
||
|
||
```bash
|
||
./gradlew installDebug
|
||
```
|
||
|