significa que geofencingclient geofences geofence celular app added android android-geofence
sitio de desarrolladores de Android

que - ¿Cómo uso la API de geofencing de Android?



geofencingclient (5)

He estado probando la nueva API del servicio de Google Play Geofencing.

Descargué el código de muestra del sitio de desarrolladores de Android . A continuación, ejecuté el código de ejemplo en un dispositivo Android (Galaxy Note 2). Coloqué la posición geográfica y el radio de mi oficina a 10 m, pero cuando caminé a mi oficina, no sucedió nada.

Al ejecutar el código de muestra, una cosa que he notado es que cuando ya estoy dentro del rango de geofence y luego agrego el geofence a LocationClient , no sucede nada.

Ya había leído la documentación de la clase LocationClient y encontré el siguiente párrafo:

En caso de que el usuario deshabilite el proveedor de ubicación de la red, el servicio de geofence dejará de actualizarse, se eliminarán todas las geofences registradas y se generará un intento por el intento pendiente proporcionado. En este caso, hasError(Intent) devuelve true y getErrorCode(Intent) devuelve GEOFENCE_NOT_AVAILABLE ".

Así que encendí WiFi, y caminaba hacia mi oficina (dentro de la geofence), y luego recibí la notificación "geofence ingresada".

Tengo las siguientes preguntas:

  1. ¿El geofencing solo funciona con WiFi habilitado?

  2. ¿Por qué no funciona la ubicación proporcionada por mi red 3G?

  3. ¿Es este un error en el código de muestra?

  4. ¿O es este mi error?


Pensé en compartir mis resultados aquí. Yo también he desarrollado una aplicación de laboratorio que implementa la API de ubicación de servicios de Google Play y la API de geofence. Mis resultados muestran que el código de determinación de ubicación tiene una especie de incapacidad patológica para admitir sus errores. :)

Cuando se presiona un botón, mi aplicación crea un geofence en la ubicación actual ("curLoc") devuelta por la API de ubicación con un radio de 30 metros. En la pantalla, estoy mostrando la distancia al centro de geofence ("distToCenter") llamando a curLoc.distanceTo (fenceLoc) y actualizándolo aproximadamente cada segundo.

Comienzo la aplicación y espero hasta que la precisión se estabilice (normalmente a 10.0 metros), luego presiono el botón para crear la cerca. Obtengo el evento "enter" inmediatamente. Limpio el evento y salgo a caminar y aparentemente entro en una anomalía espacio-tiempo. Bajé la cuadra y doblé la esquina, y el valor de distToCenter solo aumentó unos 4 metros. Voy más lejos hasta que esté a unos 300 metros de mi casa (a juzgar por los pasos contados) y el dstToCenter aumenta gradualmente. El evento de salida de geofence finalmente se dispara unos 20 segundos DESPUÉS de que el dstToCenter supera los 30 metros.

Espero a ver dónde se estabiliza la distancia y está a unos 150 metros. Me doy la vuelta y vuelvo a casa y se produce el mismo retraso de posición extrema. Me siento en mi escritorio, mientras que mi propio agujero de gusano todavía está a unos 90 metros. Después de unos 40 segundos, mi doppleganger se mete dentro de la cerca y luego de unos 20 segundos más, obtengo el evento enter.

En este punto, todavía estoy en algún lugar de la acera frontal (a 7,4 metros), avanzando lentamente hacia la puerta principal.

NOTA: La fuente estaba "fusionada" en todo momento, aunque vi que el ícono de la barra de estado del GPS se encendía y destellaba unos segundos después de haber perdido la conectividad a mi WiFi. Es más, la precisión nunca osciló desde 10.0 metros.

¡MENTIROSOS!

:)


Probé una aplicación de ejemplo de geofence, y si WiFi está desactivado, no detecta eventos de geofence en una versión inferior a Android 4.3.

Android 4.3 y superior funciona incluso WiFi está apagado.


Si solo utiliza una red celular, la precisión de la ubicación es menor que la de wi-fi o gps (si abre Google Maps, el círculo azul es la estimación de su posición actual; si solo usa 3GP, el círculo puede tener un radio de incluso cientos de metros).

Los últimos días, estoy trabajando en una aplicación que utiliza Geofences y descubrí lo siguiente: En mi humilde opinión, la entrada de geofence se activa solo si TODO este "círculo de estimación de ubicación" está dentro del radio de geofence, es decir, si hay un 100% de probabilidades de que ingreses al geofence . Así que depende de cuán grande sea el radio que establezcas. Si configura solo 10 metros, probablemente funcionará solo con GPS, nunca con 3GP. Para 3GP tendrás que establecer el radio como 1000 metros.


Wifi se utiliza para ayudar a rastrear su ubicación. El uso de señales wifi y señales celulares para triangular su posición es una solución más eficiente que tener su GPS funcionando constantemente. Además, funciona en situaciones en las que el GPS no funciona como áreas de rutas múltiples pesadas y en interiores.


en el caso de la condición de la red, debe aumentar el radio al menos 1000 M, ya que al utilizar el proveedor de la red para recuperar la ubicación actual, la ubicación se realiza desde la torre de la red más cercana. Pero en el caso del GPS y la condición de wifi, es más precisa (1 M además).