Android - запуск геозоны при потере GPS

я использовал простой код Google для «Создания и мониторинга геозон», и все работает нормально, но у меня есть одна проблема: когда устройство теряет сигнал GPS на секунду, событие триггера будет считать это выходом, а когда ответный сигнал будет считаться входом

даже если он все еще находится внутри Geofence, я думаю, я не могу избежать этой ситуации, так что кто-нибудь знал, можно ли подавить это поведение?

Также дополнительные вопросы, я много читал в проблемах геозоны stackoverflow, что использование BroadcastReceiver лучше, чем Service, для получения переходов прямо сейчас, я использую службу для получения, и она работает нормально. Нужно ли менять ее на BroadcastReceiver?


person hasd11    schedule 13.06.2016    source источник


Ответы (1)


Это проблема, связанная с тем, что Google Geofence время от времени полагается на плохие точки сетевого местоположения. У меня есть потенциальное решение для этого здесь . Это не на 100%, но помогает подавить прыжки через геозоны.

Что касается второй части вашего вопроса, я не знаю, имеете ли вы в виду IntentService или просто службу. Если это служба, я бы рекомендовал использовать IntentService или BroadcastReceiver. IntentServices в основном используются для выполнения задач в фоновом потоке, где BroadcastReceivers предназначены для перезапуска процесса (если он не был принудительно остановлен пользователем) и выполнения быстрой задачи для обработки намерения. Оба они автономны и уничтожают себя сразу после выполнения задачи. Но чтобы ответить на ваш вопрос, нет, вам необязательно использовать BroadcastReceiver, но лучше это сделать.

person Pablo Baxter    schedule 13.06.2016
comment
спасибо за ваш ответ, действительно помог, и да, я имел в виду IntentServices, но часть вашего ответа, которую я не очень хорошо понял, заключается в том, чтобы сделать вызов GPS в событии перехода, что вы подразумеваете под вызовом GPS? - person hasd11; 13.06.2016
comment
Когда вы получите ложный выход, используйте LocationManager, чтобы вызвать точку GPS. Если вы получаете точку за пределами геозоны, выполните блокировку кода выхода. Если ваша точка все еще находится в геозоне, просто установите геозону на ту же центральную точку, но увеличьте геозону на 25 м. Убедитесь, что у вас есть максимальный размер для вашей геозоны, так как вам не нужно что-то больше, чем вы действительно хотите. - person Pablo Baxter; 13.06.2016
comment
Я вижу, спасибо, но действительно ли необходимо увеличить геозону? потому что моя геозона теперь имеет радиус 200, и я не хочу делать ее больше - person hasd11; 14.06.2016
comment
Если о таком большом, то нет. Это было, если бы у вас было что-то маленькое, например, 50 м. - person Pablo Baxter; 14.06.2016
comment
Я вижу, последний вопрос, когда обновление Geofence считается введенным, или будет отправлено уведомление о входе снова? - person hasd11; 14.06.2016
comment
Вы можете установить тип перехода при повторном добавлении геозоны в GEOFENCE_TRANSITION_EXIT. Теперь, когда геозона повторно обновляется, она должна сообщать только при выходе, а не при входе. - person Pablo Baxter; 14.06.2016