Prompt to enable Bluetooth/location at recording start + two 'don't ask' settings
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.
This commit is contained in:
parent
f7ba059628
commit
2d0e51bd8d
5 changed files with 104 additions and 1 deletions
30
docs/session-logs/2026-10-17_bt-gps-prompts.md
Normal file
30
docs/session-logs/2026-10-17_bt-gps-prompts.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Сессия 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.js` `GPS.isLocationEnabled()` - дёргает check_location, читает state-файл; true/false или
|
||||
null (неизвестно - тогда не спрашивать).
|
||||
- `main.js` `ensureSystemReady(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 / Открыть настройки гео); отказ -> запись идёт как есть; включить чекбоксы "не
|
||||
спрашивать" -> попапы не показываются.
|
||||
Loading…
Add table
Add a link
Reference in a new issue