Подтвердить что ты не робот

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

Я тестировал новый API сервиса Google Geofencing.

Я загрузил образец кода из сайта разработчиков Android. Затем я запустил пример кода на устройстве Android (Galaxy Note 2). Я разместил геопозицию и радиус своего офиса до 10 м, но когда я подошел к своему офису, ничего не случилось.

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

Я уже прочитал LocationClient документацию по классу и нашел следующий абзац:

Если поставщик сетевого местоположения отключен пользователем, служба geofence перестанет обновляться, все зарегистрированные геофотоснимки будут удалены, а намерение будет создано предоставленным ожидающим намерением. В этом случае hasError(Intent) возвращает true и getErrorCode(Intent) возвращает GEOFENCE_NOT_AVAILABLE. "

Итак, я включил Wi-Fi и шел к моему офису (внутри geofence), а затем получил уведомление о "геозонности".

У меня есть следующие вопросы:

  • Работает ли геообработка только с WiFi?

  • Почему не работает местоположение, предоставляемое моей сетью 3G?

  • Является ли это ошибкой в ​​примере кода?

  • Или это моя ошибка?

4b9b3361

Ответ 1

Если вы используете только сотовую сеть, точность местоположения ниже, чем точность wi-fi или gps (если вы открываете Google Maps, синий круг - это оценка вашей текущей позиции - если вы используете только 3GP, круг может иметь радиус даже сотни метров).

В последние дни я работаю над приложением с использованием Geofences, и я понял следующее: IMHO запись геозонности срабатывает только в том случае, если ВСЕ этот "круг оценки местоположения" находится внутри радиуса геофенсации, то есть, если есть 100% вероятность того, что вы вступил в геозонность. Так что это зависит от того, какой большой радиус вы установили. Если вы установите только 10 метров, это, вероятно, будет работать только с GPS, никогда с 3GP. Для 3GP вам нужно будет установить радиус, равный 1000 м.

Ответ 2

Wifi используется для отслеживания вашего местоположения. Использование сигналов Wi-Fi и сигналов ячеек для триангуляции вашей позиции - это более эффективное решение, чем постоянное использование вашего GPS. Кроме того, он работает в ситуациях, когда GPS не будет такой, как большие многолучевые области и внутри помещений.

Ответ 3

в случае сетевого состояния вы должны увеличить радиус не менее 1000 М, потому что, используя сетевой провайдер для извлечения текущего местоположения, он занимает место рядом с сетевой башней. Но в случае состояния GPS и Wi-Fi он работает более точно (1 М также).

Ответ 4

Я думал, что поделился бы своими результатами здесь. Я также разработал лабораторное приложение, которое реализует API местоположения Google Play Services и API Geofence. Мои результаты показывают, что код определения местоположения имеет своего рода патологическую неспособность признать свои ошибки.:)

При нажатии кнопки мое приложение создает геозонность в текущем местоположении ( "curLoc" ), возвращаемом API местоположения с радиусом 30 метров. На экране я показываю расстояние до центра геоцентра ( "distToCenter" ), вызывая curLoc.distanceTo(fenceLoc) и обновляя его примерно каждую секунду.

Я запускаю приложение и жду, пока точность не стабилизируется (обычно на 10,0 м), затем нажмите кнопку, чтобы создать забор. Я получаю событие "enter" немедленно. Я очищаю событие и иду на прогулку и, по-видимому, вступаю в пространственно-временную аномалию. Я иду по блоку и за углом, а значение distToCenter только увеличилось примерно на 4 метра. Я иду дальше, пока не окажусь в 300 метрах от моего дома (судя по шагам подсчета), и dstToCenter постепенно увеличивается. Событие выхода geofence, наконец, срабатывает около 20 секунд. После того, как dstToCenter пройдет выше 30 метров.

Я жду, чтобы увидеть, где расстояние стабилизируется, и это около 150-их метров. Я поворачиваюсь и возвращаюсь домой, и происходит такое же отставание в крайнем положении. Я сажусь за свой рабочий стол, пока моя червоточина находится примерно в 90 метрах. Примерно через 40 секунд мой доппельгангер попадает в забор, и примерно через 20 секунд я получаю событие ввода.

В этот момент я все еще где-то на переднем тротуаре (в 7,4 метрах), пробираясь к входной двери.

ПРИМЕЧАНИЕ. Источник был "слит", хотя я видел, что значок состояния сети GPS включается и мигает в течение нескольких секунд после того, как я потерял связь с моим WiFi. Что еще, точность никогда не колебалась с 10,0 метров.

лжецы!

:)

Ответ 5

Я тестировал образец приложения geofence, и если Wi-Fi отключен, он не обнаруживает события geofence на версии меньше, чем Android 4.3.

Android 4.3 и выше работает даже при отключении Wi-Fi.