Ошибка в тестовом коде Geofence для Android? Кто-нибудь может подтвердить?

Я не уверен, что это ошибка с новым примером кода Google GeoFence, или мое понимание того, что он должен делать, неправильно. Образец приложения создает геообъекты, но не предупреждает о нарушении геозонности. Если кто-то захочет дать это попробовать и подтвердить, вы можете скачать образец кода отсюда:

https://developer.android.com/training/location/geofencing.html

Это то, что я ожидал от примера приложения:

  • Установите 2 разных геозоны. В моем случае я выбрал 2 точки на милю друг от друга, введя их соответствующие lat / long. Я также установил радиус 250 м.
  • Я поехал в каждое из этих двух мест один за другим, и я предположил, что появится всплывающее уведомление о том, что геозонность была нарушена.

В этом случае никаких уведомлений и сообщений журнала не было зарегистрировано, что означает, что «ReceiveTransitionsIntentService» никогда не вызывался. Одно из наблюдений заключается в том, что, когда я еду в первое место, а затем добавляю новый геозонс прямо в этом месте , уведомление немедленно запускается , но любое другое местоположение (геозонность), которое я устанавливаю и управляю, ничего не происходит.

Любая идея почему? Насколько я правильно понимаю пример функциональности приложения?

Нужно ли мне что-либо делать в дополнение к тому, что находится в образце кода, чтобы получать предупреждение, когда я нарушаю геозонность во время вождения? Наблюдается ли мониторинг геозонности отдельно от создания геообъектов, чего мне здесь не хватает?

Высоко ценим любой вход, мы очень хотим использовать это в нашем приложении, но прямо сейчас мы застряли.

Спасибо, Торри.

Solutions Collecting From Web of "Ошибка в тестовом коде Geofence для Android? Кто-нибудь может подтвердить?"

Прежде всего, ваше понимание функциональности приложения является правильным. Всякий раз, когда вы вводите / оставляете один из своих геобонций, он показывает вам, что в уведомлении (он всегда обновляет одно и то же сообщение btw, поэтому следите за ним или вы можете пропустить одно из событий).

Во-вторых, будьте осторожны, потому что Geofence 1 по умолчанию запускает только события ENTER . Поэтому, если вы покинете эту зону геопространства после того, как будете внутри нее, вы не получите уведомление для этого! Вы можете изменить это поведение при создании объекта mUIGeofence1 на MainActivity.java.

Наконец, как и во всех вещах, связанных с местоположением, этот API не идеален. Из моих тестов до сих пор я никогда не видел, чтобы он запускал GPS, поэтому, когда снаружи он, похоже, полагается на сетевые местоположения, которые легко могут не упасть Под радиусом действия 500 м, даже если вы стоите прямо посередине. Во время одной из презентаций в IO, Reto Meier упомянул, что API будет достаточно умным, чтобы наилучшим образом справляться с утечкой батареи, поэтому он будет включать GPS только тогда, когда пользователь начнет приближаться к геозонности – что имеет смысл, – но это Никогда, похоже, не происходит.

API никогда не включит GPS. Вы должны сами начать GPS.

Также убедитесь, что вы установили свой радиус достаточно большим. Я буду предлагать 1000, чтобы увидеть, работает ли это. Я все еще играю с ним, но пример кода здесь работает нормально:

Как использовать API Geofencing для Android?

Я попробовал образец кода GeofenceDetection, и он работает. Я использую только Wifi и GPS, и устанавливаю, что мой радиус составляет 15 метров. Когда я ходил в регион, он не сразу показывает уведомление. Через несколько секунд я получил уведомление «войти». Кроме того, даже если я стою в этом регионе, иногда мне сообщили, что я покидаю регион. Это заставляет приложение чувствовать, что он прыгает вокруг и из региона.

Я написал тестовое приложение, которое использовало как расположение Google Play Services, так и API Geofence. Я использовал API местоположения, чтобы получить текущее местоположение со скоростью 1 секунду. Когда я установил геозонность, я отобразил расстояние от текущего местоположения до центра геоффенса, обновляясь всякий раз, когда позиция обновляется.

Сразу после установки geofence я получаю событие записи. Я очищаю это событие и отправляюсь на прогулку далеко за пределы радиуса геосферы. Отображаемое расстояние отстает от ума. Позиция заняла около трех минут, чтобы догнать меня. Подобное отставание произошло на обратном пути домой.

Службы Pity Play являются закрытыми источниками, я бы хотел понять пределы их алгоритма.

Первоначально я думал то же самое. Это потому, что радиус находится в метрах, и я думал, что это будет в KMS / Miles. Поэтому я ввел очень маленькие значения. Затем, после нескольких экспериментов, я обнаружил это. Введенные большие значения, и это работало как очарование моего Nexus 5