Я работаю над библиотекой, которая может использоваться для мониторинга геофонов на устройствах Android. Я заметил, что геолокации, которые я регистрирую в Google Apps Location GeofencingApi, теряются после того, как я отключил и снова включил службы геопозиционирования в настройках устройства.Настройки мониторинга местоположения в библиотеке
Я видел folks, предлагая мне зарегистрироваться на приемник android.location.PROVIDERS_CHANGED
в моем AndroidManifest.xml
файле. Я сделал это, но этот широковещательный приемник вызван только при добавлении и удалении поставщиков тестов в моем тестовом приложении. Я не получаю его вообще при переключении служб местоположения в настройках устройства.
Я делаю что-то неправильно? Кто-нибудь знает, как надежно определить, когда пользователь переключает службы местоположения в настройки устройства? Я хотел бы видеть эти события в фоновом режиме, даже если мое приложение не работает.
Я полагаю, что я могу настроить повторяющуюся задачу, которая работает в фоновом режиме, и периодически проверяет, было ли переключено на службы геолокации, но это звучит грубо и неэффективно.
Если это помогает, я тестирую Moto G под управлением Android 4.4.2. До сих пор все, что я делал с помощью геообъективов, отлично работает.
EDIT: После проведения большего исследования я обнаружил, что поведение трансляции PROVIDERS_CHANGED
сильно варьируется в зависимости от версии телефона и модели. Мой Nexus 5 работает под управлением Android 5.1, кажется, работает нормально на самом деле - я могу регулярно получать трансляцию PROVIDERS_CHANGED
. У меня также есть Moto G и Moto X, работающие на 4.4.x, и они никогда не выпускали для меня PROVIDERS_CHANGED
. Samsung Galaxy S3 на Android 4.2 произведет трансляцию для меня, но перестанет ее выполнять после того, как я использовал свою активность в Map с поставщиками тестовых местоположений.
В любом случае, я решил прекратить заниматься этой проблемой пока. Я думаю, что Android просто глючит.
Это может быть полезно http://stackoverflow.com/questions/10311834/how-to-check-if-location-services-are-enabled Также вы попытались, возможно, сохранить данные геозонности локально или где-то еще, чтобы предотвратить это от удаления? –
Я уже сохраняю геолокации локально, поэтому я не буду терять их навсегда (если пользователь не очистит кеш). Это не моя проблема. Моя проблема в том, что я не получаю событие, уведомляет меня о том, что настройки поставщика местоположения изменились. (то есть: мне не сообщают, что они были удалены ОС, и мне не сообщают, когда я могу перезагрузить). –
http://stackoverflow.com/questions/25156977/google-location-services-vs-android-location-services/25160005#25160005 Я регистрируюсь для поставщиков_changed в коде. На самом деле вам нужен код, чтобы получить достойный ответ. IDK с 4.4.2, возможно, он не работает. Через несколько месяцев я не активировал среду Android. – danny117