Files
WorkoutHammerAndroid/README.md
2025-11-30 00:58:24 +03:00

115 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Грузоблочный тренажер - 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
```