Ошибка в тестовом коде Geofence для Android? Кто-нибудь может подтвердить?
Я не уверен, что это ошибка с новым примером кода GeoFence для Android, или мое понимание того, что он должен делать, неверно. Приложение-образец создает геообъекты, но не предупреждает о нарушении геофлоности. Если кто-то попросит и подтвердит, вы можете скачать пример кода:
https://developer.android.com/training/location/geofencing.html
Это то, что я ожидал от примера приложения:
- Настройте 2 разных геозоны. В моем случае я выбрал 2 очка в миле
отдельно, введя их соответствующие lat/long. Я также задал радиус
до 250 м.
- Я поехал в каждое из этих двух мест один за другим
и я предположил, что появится всплывающее уведомление, указывающее, что геозонность
был нарушен.
В этом случае никаких уведомлений и сообщений журнала не было зарегистрировано, что означает, что "ReceiveTransitionsIntentService" никогда не вызывался. Одно из наблюдений заключается в том, что , когда я еду в первое место, а затем добавляю новый геозонс в этом месте, уведомление получает сразу же, но любое другое местоположение (геозонность) я установить и проехать, ничего не происходит.
Любая идея, почему? Насколько я правильно понимаю пример функциональности приложения-приложения?
Нужно ли мне что-либо делать в дополнение к тому, что находится в образце кода для получения предупреждения, когда я нарушаю геозонность во время вождения? Наблюдается ли мониторинг геозонности отдельно от создания геообъектов, чего я здесь не хватает?
Высоко ценим любой вход, мы очень хотим использовать это в нашем приложении, но прямо сейчас мы застряли.
Спасибо,
Торри.
Ответы
Ответ 1
Прежде всего, ваше понимание функциональности приложения верное. Всякий раз, когда вы вводите/оставляете один из своих геофотоснимков, он показывает вам, что в уведомлении (он всегда обновляет одно и то же сообщение btw, поэтому следите за ним или вы можете пропустить одно из событий).
Во-вторых, будьте осторожны, потому что Geofence 1 по умолчанию запускает только события ВВОД. Поэтому, если вы покинете эту зону геопространства после того, как будете внутри нее, вы не получите уведомление для этого! Вы можете изменить это поведение при создании объекта mUIGeofence1 на MainActivity.java.
Наконец, как и во всех вещах, связанных с местоположением, этот API не идеален. Из моих тестов до сих пор я никогда не видел, чтобы он запускал GPS, поэтому, когда снаружи он, похоже, полагается на сетевые местоположения, которые могут легко не попадать под радиус действия радиуса 500 м, даже если вы стоите прямо посередине. Во время одной из презентаций в IO, Reto Meier упомянул, что API будет достаточно умным, чтобы эффективно разряжать аккумулятор, поэтому он будет включать GPS только тогда, когда пользователь начнет приближаться к геозонности - что имеет смысл, - но это никогда, похоже, не происходит.
Ответ 2
API никогда не включит GPS. Вы должны сами начать GPS.
Ответ 3
также убедитесь, что вы установили свой радиус достаточно большим. Я рекомендую сделать 1000, чтобы увидеть, работает ли это. Я все еще играю с ним, но пример кода здесь отлично работает:
Как использовать API Geofencing для Android?
Ответ 4
Я попробовал пример кода GeofenceDetection, и он работает.
Я использую только Wifi и GPS, и устанавливаю свой радиус на 15 метров.
Когда я ходил в регион, он не сразу показывает уведомление.
Через несколько секунд я получил уведомление "enter".
Кроме того, даже если я стою в этом регионе, иногда я получил уведомление
что я покидаю регион. Это заставляет приложение чувствовать, что он прыгает в и из региона.
Ответ 5
Я написал тестовое приложение, которое использовало как расположение Google Play Services, так и API Geofence. Я использовал API местоположения, чтобы получить текущее местоположение со скоростью 1 секунду. Когда я установил геозонность, я отобразил расстояние от текущего местоположения до центра геоффенса, обновляемого всякий раз, когда обновлялась позиция.
Сразу после установки геосферы я получаю событие записи. Я очищаю это событие и отправляюсь на прогулку далеко за пределы радиуса геосферы. Отображаемое расстояние выглядит сумасшедшим. Мне потребовалось около трех минут, чтобы позиция догнала меня. Подобное отставание произошло на обратном пути.
Службы Pity Play закрыты, я хотел бы понять пределы их алгоритма.
Ответ 6
Изначально я думал то же самое. Это потому, что радиус находится в метрах, и я думал, что это будет в KMS/Miles. Поэтому я ввел очень маленькие значения. Затем, после нескольких экспериментов, я обнаружил это. Вводил большие значения, и он работал как шарм на моем Nexus 5