A shared Hydration singleton (ticked by the GPS ride service and the HR/VR service, deduped in one process) accrues the body's water need over an active session and subtracts what you logged via the "+вода" button. It stays silent while you keep up — can be quiet for hours — and only beeps LOUD on the alarm stream (cuts through media volume) once the running deficit passes a threshold, then re-beeps on a cooldown. Not a fixed timer. Rust set_hydration_config / hydration_drink bridge JS settings and the "+вода" button to hydration.json / water_drink.txt that the native service reads.
2.8 KiB
2.8 KiB
2026-10-24 - Уровневое напоминание пить на тренировке
Что
Напоминание пить во время велозаезда и VR. НЕ фиксированный таймер (в норме молчит часами) - уровневая модель: во время активности копится потребность в воде (пот), кнопка «+вода» гасит отставание; громкий сигнал только когда дефицит превышает порог.
Реализация
Hydration.kt(новый) - синглтон на процесс (оба сервиса в одном процессе -> дедуп, нет двойных бипов на заезде с ремнём).tick()копитsweatMlPerHourза время, вычитает выпитое изwater_drink.txt, сигналит (ToneGenerator STREAM_ALARM - пробивает громкость + вибро + уведомление) при дефиците >=alertMl, повтор черезreAlertMin. Конфигhydration.json.GpsRecorderService.kt(велозаезд) иBleHrService.kt(VR) тикаютHydration(reset при старте).- Rust:
set_hydration_config(enabled, alert_ml, sweat_ml_per_hour, re_alert_min),hydration_drink(ml)(пишет вwater_drink.txt, оба пути корня). Манифест: VIBRATE. - JS: настройка в профиле (вкл, сигнал при отставании мл, +вода за нажатие мл); кнопка «+вода» на
экране записи ->
hydration_drink+DB.logWaterDrink(ищет 100%-воду, идёт в дневной итог).
Эволюция (несколько итераций по уточнениям)
- Сначала привязал к HR-сервису (VR). Исправлено: главное - велик, значит GPS-сервис.
- Сначала фиксированный интервал. Исправлено: не таймер, а УРОВЕНЬ (дефицит), молчит пока пьёшь.
Статус
Собрано (0.1.519), JS/Rust/Kotlin компилируются. Залито на роутер (http://192.168.1.1:88/baldav/baldav.apk) и VPS (https://4aiman.top/baldav/baldav.apk) - build 519. НА УСТРОЙСТВЕ НЕ ПРОВЕРЕНО (телефон был отключён). Проверка: профиль -> включить, старт «Вело», подождать, «+вода» гасит.
Дальше
- Кнопка «+вода» на экране VR (сейчас только на записи-карте).
- Возможно вынести sweatMlPerHour/reAlertMin в настройки (сейчас 600/15 по умолчанию).