User forgets to turn BT/GPS on. Modern Android won't let an app toggle them silently, so prompt and act: BT via the system enable dialog, location via the location-settings screen. - ensureSystemReady(needBt, needGps) runs before startRecording: BT off -> confirm -> ble_request_enable; location off -> confirm -> open settings. Gated by two settings (baldav_dontask_bt / _gps); declining proceeds. - GPS.isLocationEnabled polls a new Kotlin check (check_location writes location_state.json via LocationManager; read_state_file reads it); open_location_settings opens ACTION_LOCATION_SOURCE_SETTINGS. - Settings: 'Не спрашивать про Bluetooth' / '... геолокацию' checkboxes.
2.6 KiB
Сессия 2026-10-17 (2) - попап "включи BT/гео" при старте записи + 2 настройки "не спрашивать"
Задача
Пользователь забывает включать Bluetooth и GPS. Нужно: при старте записи, если выключено - предложить включить; дать отказаться; 2 отдельные настройки "не спрашивать".
Факт-чек: телефон С Google-сервисами (ранее ошибочно решил, что без). Тихо включать BT/гео приложение на target 36 не может (ОС), поэтому - попап + действие: BT через системный диалог включения, гео через экран настроек геолокации.
Сделано
- Rust
read_state_file(name)(allowlist "location_state.json") - читает ответ Kotlin из native_root. Зарегистрирован. - Kotlin MainActivity: команды
check_location(пишетlocation_state.json{enabled} через LocationManager.isLocationEnabled) иopen_location_settings(ACTION_LOCATION_SOURCE_SETTINGS). gps.jsGPS.isLocationEnabled()- дёргает check_location, читает state-файл; true/false или null (неизвестно - тогда не спрашивать).main.jsensureSystemReady(needBt, needGps)- перед startRecording: BT off -> appConfirm "Включить?" ->ble_request_enable; гео off -> appConfirm "Открыть настройки?" ->open_location_settings. Гейтится настройкамиbaldav_dontask_bt/baldav_dontask_gps. Вызов в кнопке записи: needBt = есть привязанный датчик, needGps = не зарядка.- Настройки (раздел Пульсометр): 2 чекбокса "Не спрашивать про Bluetooth" / "...геолокацию".
Ограничение (честно): авто-ВЫКЛ BT/гео после тренировки приложение сделать не может (ОС). Тихое включение - тоже; поэтому попап + один тап.
Проверка
Синтаксис JS ок. На телефоне: выключить BT и гео, старт записи трека -> два попапа по очереди (Включить BT / Открыть настройки гео); отказ -> запись идёт как есть; включить чекбоксы "не спрашивать" -> попапы не показываются.