first commit
This commit is contained in:
114
README.md
Normal file
114
README.md
Normal 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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user