184 lines
8.0 KiB
Markdown
184 lines
8.0 KiB
Markdown
# Тренировочное приложение КГЭУ
|
||
|
||
Android-приложение для проведения и учёта тренировок с использованием тренажёра, подключённого к ESP32.
|
||
|
||
## Описание
|
||
|
||
Приложение позволяет:
|
||
- Регистрировать участников тренировок
|
||
- Создавать и выбирать сценарии упражнений
|
||
- Проводить тренировки с автоматическим подсчётом подъёмов
|
||
- Отслеживать пульс через Bluetooth-кардиодатчик
|
||
- Просматривать статистику тренировок
|
||
|
||
## Режимы тренировок
|
||
|
||
### Режим на время (TIME_BASED)
|
||
- Задаётся время выполнения упражнения в секундах
|
||
- Приложение считает количество выполненных подъёмов
|
||
- Норматив: минимальное количество подъёмов за заданное время
|
||
|
||
### Режим на количество (COUNT_BASED)
|
||
- Задаётся целевое количество подъёмов
|
||
- Приложение засекает время выполнения
|
||
- Норматив: максимальное время для выполнения заданного количества подъёмов
|
||
|
||
## Технические требования
|
||
|
||
- Android 14 (API 34) или выше
|
||
- Bluetooth для подключения кардиодатчика
|
||
- WiFi для подключения к ESP32
|
||
|
||
## Подключение к оборудованию
|
||
|
||
### ESP32
|
||
Приложение подключается к ESP32 по TCP/IP. ESP32 должен отправлять JSON-сообщения с положением груза:
|
||
```json
|
||
{"position": "top"} // Груз вверху
|
||
{"position": "middle"} // Груз в движении
|
||
{"position": "bottom"} // Груз внизу
|
||
```
|
||
|
||
Поддерживаемые значения `position`:
|
||
- `top`, `up` — верхнее положение
|
||
- `middle`, `moving`, `in_motion`, `motion` — груз в движении
|
||
- `bottom`, `down` — нижнее положение
|
||
|
||
### Кардиодатчик
|
||
Приложение поддерживает Bluetooth-кардиодатчики с протоколом Heart Rate Service (стандартный BLE профиль).
|
||
|
||
## Сборка проекта
|
||
|
||
### Требования
|
||
- Android Studio Ladybug (2024.2) или новее
|
||
- JDK 11
|
||
- Android SDK 36
|
||
|
||
### Шаги сборки
|
||
|
||
1. Клонируйте репозиторий:
|
||
```bash
|
||
git clone <url-репозитория>
|
||
cd AndroidStudioProjects
|
||
```
|
||
|
||
2. Откройте проект в Android Studio:
|
||
- File → Open → выберите папку проекта
|
||
|
||
3. Дождитесь синхронизации Gradle (происходит автоматически)
|
||
|
||
4. Соберите проект:
|
||
- Build → Make Project (Ctrl+F9)
|
||
|
||
## Установка на телефон
|
||
|
||
### Способ 1: Через Android Studio (рекомендуется для разработки)
|
||
|
||
1. Включите на телефоне **Режим разработчика**:
|
||
- Настройки → О телефоне → 7 раз нажмите на "Номер сборки"
|
||
|
||
2. Включите **Отладку по USB**:
|
||
- Настройки → Для разработчиков → Отладка по USB → Включить
|
||
|
||
3. Подключите телефон к компьютеру USB-кабелем
|
||
|
||
4. Разрешите отладку на телефоне (появится диалог при первом подключении)
|
||
|
||
5. В Android Studio выберите ваше устройство в выпадающем списке устройств (рядом с кнопкой Run)
|
||
|
||
6. Нажмите **Run** (Shift+F10) или зелёную кнопку ▶
|
||
|
||
### Способ 2: Установка APK-файла
|
||
|
||
1. Соберите релизный APK:
|
||
- Build → Build Bundle(s) / APK(s) → Build APK(s)
|
||
- APK будет в папке `app/build/outputs/apk/debug/`
|
||
|
||
2. Скопируйте APK на телефон любым способом:
|
||
- Через USB-кабель
|
||
- Через облачное хранилище
|
||
- Через мессенджер
|
||
|
||
3. На телефоне разрешите установку из неизвестных источников:
|
||
- Настройки → Безопасность → Неизвестные источники (или аналогичный пункт)
|
||
|
||
4. Откройте APK-файл на телефоне и установите
|
||
|
||
### Способ 3: Через ADB (командная строка)
|
||
|
||
1. Установите ADB (входит в Android SDK Platform Tools)
|
||
|
||
2. Подключите телефон с включённой отладкой по USB
|
||
|
||
3. Проверьте подключение:
|
||
```bash
|
||
adb devices
|
||
```
|
||
|
||
4. Установите APK:
|
||
```bash
|
||
adb install app/build/outputs/apk/debug/app-debug.apk
|
||
```
|
||
|
||
Или соберите и установите одной командой:
|
||
```bash
|
||
./gradlew installDebug
|
||
```
|
||
|
||
## Разрешения приложения
|
||
|
||
При первом запуске приложение запросит разрешения:
|
||
- **Bluetooth** — для подключения к кардиодатчику
|
||
- **Nearby Devices** — для сканирования Bluetooth-устройств
|
||
- **Internet/Network** — для подключения к ESP32
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
app/src/main/java/ru/kgeu/training/
|
||
├── bluetooth/ # Работа с Bluetooth (кардиодатчик)
|
||
├── data/
|
||
│ ├── dao/ # Data Access Objects для Room
|
||
│ ├── database/ # Конфигурация базы данных
|
||
│ ├── model/ # Модели данных (Participant, Scenario, Session)
|
||
│ └── repository/ # Репозиторий для работы с данными
|
||
├── network/ # TCP-клиент для ESP32
|
||
├── ui/
|
||
│ ├── navigation/ # Навигация приложения
|
||
│ ├── screen/ # Экраны (Compose)
|
||
│ ├── theme/ # Тема приложения
|
||
│ └── viewmodel/ # ViewModels
|
||
├── util/ # Вспомогательные утилиты
|
||
├── MainActivity.kt # Главная Activity
|
||
└── TrainingApplication.kt # Application класс
|
||
```
|
||
|
||
## Настройка подключения к ESP32
|
||
|
||
IP-адрес и порт ESP32 можно настроить в приложении перед началом тренировки.
|
||
|
||
По умолчанию:
|
||
- Порт: 8080 (или настраиваемый)
|
||
- Протокол: TCP
|
||
|
||
## Решение проблем
|
||
|
||
### Не подключается к ESP32
|
||
1. Проверьте, что телефон и ESP32 в одной WiFi-сети
|
||
2. Проверьте правильность IP-адреса и порта
|
||
3. Убедитесь, что ESP32 запущен и слушает указанный порт
|
||
|
||
### Не подключается кардиодатчик
|
||
1. Убедитесь, что Bluetooth включён на телефоне
|
||
2. Проверьте, что кардиодатчик активен и не подключён к другому устройству
|
||
3. Перезапустите кардиодатчик
|
||
|
||
### Приложение не устанавливается
|
||
1. Проверьте версию Android (требуется 14+)
|
||
2. Убедитесь, что разрешена установка из неизвестных источников
|
||
3. Удалите предыдущую версию приложения, если она установлена
|
||
|
||
## Лицензия
|
||
|
||
Разработано для КГЭУ (Казанский государственный энергетический университет).
|