first commit

This commit is contained in:
2025-11-30 00:58:24 +03:00
commit ad20ba3325
79 changed files with 5158 additions and 0 deletions

114
README.md Normal file
View File

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