FusedLocationProviderApi, PRIORITY_BALANCED_POWER_ACCURACY и использование GPS

Я создаю приложение, которое отслеживает местоположение через FusedLocationProviderApi в службе переднего плана.

Когда я создаю LocationRequest с PRIORITY_BALANCED_POWER_ACCURACY и начинаю прослушивать обновления местоположения, к моему удивлению, GPS срабатывает (Местоположение в настройках телефона установлено на «Высокая точность»). Я получаю местоположение почти сразу (полагаю, через источники Wi-Fi / сотовой связи), но, поскольку я нахожусь в помещении, я не могу получить исправление GPS, и он просто продолжает пытаться без конца ...

Несмотря на то, что я не просил PRIORITY_HIGH_ACCURACY, я столкнулся со значительным разрядом батареи и был обвинен в использовании GPS в течение нескольких минут.

  1. Есть ли способ установить тайм-аут для поиска GPS (обнаружение ситуации в помещении)?
  2. Можно ли получить приличное местоположение с помощью FusedLocationProviderApi без автоматического запуска GPS или мне нужно вернуться к старому API определения местоположения?
  3. Должен ли я прибегать к ограничению каждого запроса LocationRequest до пары минут (setExpirationDuration) и создавать новый, чтобы предотвратить разрядку батареи GPS?

[РЕДАКТИРОВАТЬ]: Думаю, я нашел другого виновника. На вкладке карты в приложении я установил setMyLocationEnabled(true), и это, похоже, вызывает вспышку GPS. Поэкспериментирую еще немного и отпишусь о результатах. Тем не менее, меня интересует, как менеджер местоположения решает, что достаточно, когда дело доходит до попытки исправления GPS.

Заранее спасибо!


person Nemanja Maksimovic    schedule 14.10.2015    source источник
comment
я думаю, вам придется попросить пользователя установить для него значение BALANCED_POWER, программно выполнение запросов не изменит настройку устройства, если оно уже установлено на HIGH_ACCURACY, проверьте подсказка пользователю о настройках местоположения   -  person Pararth    schedule 14.10.2015
comment
для сценария поиска GPS вы можете добавить таймер для получения местоположения только с помощью GPS, и если он не получен в течение определенного времени, устройте обратный вызов в соответствии с тем, что вы хотите. ТАКЖЕ, FusedLocationProviderApi работает хорошо, я предлагаю не возвращаться к старому   -  person Pararth    schedule 14.10.2015
comment
Дело в том, что я не против использования GPS. Чего я не возражаю, так это тратить 30% батареи, пытаясь установить GPS в помещении, особенно если я явно не просил об этом. @user2450263   -  person Nemanja Maksimovic    schedule 14.10.2015
comment
да, то, что вы можете сделать, это установить короткий интервал для таймера при попытке получить местоположение от GPS, сценарии 9/10, где нет проблем с прямой видимостью, вы получите местоположение в течение нескольких секунд.   -  person Pararth    schedule 14.10.2015
comment
И как бы я сказал FusedLocationProviderApi, что я хочу или не хочу GPS? Я все еще не верю, что PRIORITY_BALANCED_POWER_ACCURACY гарантирует предотвращение включения GPS.   -  person Nemanja Maksimovic    schedule 14.10.2015
comment
Хм, кажется, я нашел другого виновника. На вкладке карты в приложении я установил setMyLocationEnabled(true), и это, похоже, вызывает вспышку GPS.   -  person Nemanja Maksimovic    schedule 14.10.2015