Я работаю с приложением на основе местоположения. Для определения местоположения я использую этот подход ( example1 , example2 ) с диалоговым окном настроек местоположения для пользователя. Но я отмечаю одну интересную вещь. Если пользователь установил режим экономии заряда батареи (Безопасность и местоположение> Местоположение> Режим) и после этого приложение создаст диалоговое окно настроек местоположения для запроса местоположения с помощью .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
и пользователь выберет ОК - в onActivityResult () результат будет RESULT_CANCELED
, и режим местоположения будет выберите только устройство, но не высокую точность.
Я проверял это на разных телефонах с разными версиями Android, но результат тот же. Также я тестировал эту вещь на разных приложениях. Похоже, что приложение Google Maps обрабатывает эту ситуацию правильно и после режима экономии заряда батареи меняет режим на Высокая точность (после нажатия на значок «Мое местоположение» и выбора «ОК» в диалоговом окне настроек местоположения).
Можно ли изменить режим экономии заряда батареи на высокую точность в диалоговом окне настроек? Я знаю, что могу открыть активность настроек местоположения после RESULT_CANCELED
с этим кодом (например, здесь ):
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 1);
и в onActivityResult () проверьте, включены ли провайдеры сети и GPS. Но похоже, что приложение Google Maps может справиться с этим без дополнительных действий.