android - services - para que sirve el geofencing
Prueba de geofencing con Google Play Services 6.5.+ (6)
Aquí está lo que tú necesitas hacer:
Configuración -> Opciones de desarrollador -> Permitir ubicaciones simuladas
Agregue el siguiente permiso:
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
Asegúrese de que su servicio de ubicación de GPS esté ENCENDIDO (alta precisión) no en la ubicación de red
Descargue una aplicación llamada Fake GPS (tiene un hecho feliz con un control remoto) desde la tienda de aplicaciones. Puedes configurar tu GPS falso usando esa aplicación
Espero que esta respuesta te responda :)
He estado probando la API de geofencing disponible en los últimos servicios de Google Play, utilizando el ejemplo oficial disponible aquí: https://github.com/googlesamples/android-Geofencing/ Y, por supuesto, siguiendo el curso de capacitación: http://developer.android.com/training/location/geofencing.html
La muestra muestra una notificación cuando se está acercando a dos edificios de Google en San Fransisco, así que lo ajusté para que se active cuando me estoy acercando a mi casa o mi lugar de trabajo.
Si utilizo un dispositivo real, funciona. Las notificaciones se activan correctamente. Pero cuando uso un simulador y cambio la ubicación con telnet o ddms, no pasa nada. También probé con Genymotion, con los Gapps instalados, y lo mismo: nada.
¿Alguien tendría algún indicador sobre cómo probar geofence, sin mover realmente mi trasero? Porque en la calle, no hay forma de depurar el código ...
Casi renuncié a probar las geofences ...
sin mover realmente mi trasero
... pero con una investigación intensiva encontré una solución (aunque no es óptima).
El problema con las geofences en contraste con las actualizaciones regulares de la ubicación es que las geofences necesitan un pequeño "empuje" para funcionar.
Las geofences se basan en otras aplicaciones y el sistema operativo. Si no hay una aplicación que solicite activamente actualizaciones de ubicación y el sistema Android "piense" está en el mismo lugar (ese es siempre el caso con el emulador) las vallas no se activarán.
Así que hay dos soluciones:
solicitar activamente actualizaciones de ubicación durante la depuración
abra google maps en el modo de ventanas múltiples y haga clic en el botón "my-position-button" después de ingresar Lat / Long y hacer clic en enviar en la configuración del emulador
Por supuesto, las cosas que se mencionan en las otras respuestas son requeridas (Alta Precisión).
Espero que esta respuesta ahorre tiempo para otros desarrolladores :)
Descubrí que la forma más sencilla de establecer una ubicación simulada en el emulador de Android es utilizar una pequeña aplicación diseñada para este propósito.
Al probar aplicaciones con funciones basadas en la ubicación, uso la ubicación de GPS falso .
Puedes descargar el apk desde un espejo (busca en google com.lexa.fakegps.apk) y luego instalarlo en el emulador con:
adb install com.lexa.fakegps.apk
Funciona a las mil maravillas. ¡Nunca tuve más problemas para configurar una ubicación falsa como telnet o DDMS, y es mucho más fácil, ya que puede usar una GUI simple en lugar de comandos de terminal!
EDITAR: Si necesita establecer automáticamente la ubicación en sus pruebas de unidad, puede usar estos propósitos:
Intent startIntent = new Intent();
startIntent.setAction("com.lexa.fakegps.START");
startIntent.putExtra("lat", 56.1234);
startIntent.putExtra("long", 44.0011);
startService(startIntent);
Intent stopIntent = new Intent();
stopIntent.setAction("com.lexa.fakegps.STOP");
startService(stopIntent);
Que tengas una buena prueba!
Mattia
La aplicación Lockito
ayuda a simular una ruta para probar Geofencing
. https://play.google.com/store/apps/details?id=fr.dvilleneuve.lockito
Debe activar Permitir ubicaciones simuladas Configuración-> Opciones de desarrollador-> Permitir ubicaciones simuladas
Descubrí que puede establecer una velocidad promedio a lo largo de la ruta para acelerar la simulación; sin embargo, si la velocidad es demasiado rápida, es posible que la entrada y la salida de Geofencing
no se activen o se desencadenen mucho más tarde de lo que deberían. También establecí un radio de geofence de al menos 40 metros para asegurarme de que ocurrieron los disparadores.
Con Lockito, si establece una velocidad que es demasiado rápida, la ubicación actual (punto azul en el mapa) no se actualizará lo suficientemente rápido. Así que primero configúralo a una velocidad más baja, luego corre, luego aumenta la velocidad y corre.
Llevo 2 días intentando descubrir cómo probar mi aplicación de geofence en Android Studio Emulator y finalmente lo hice. El dispositivo tenía servicios de reproducción predeterminados (me refiero a que creé el dispositivo virtual con él).
Lo resolví yendo a "Configuración de Google"> Ubicación> Modo
Y cambiándolo de "Sólo dispositivo" a "Alta precisión".
De esta manera mi aplicación finalmente funcionó. Espero eso ayude.
Tuve el mismo problema, si tienes un dispositivo, puedes falsificar fácilmente la ubicación habilitando la ubicación de burla en la configuración
Configuración-> Opciones de desarrollador-> Permitir ubicaciones simuladas
Y también hay que añadir esto en el manifiesto:
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
Nunca probé el emulador, pero intento abrir el emulador y hacer las mismas cosas (ir a la configuración y habilitar ubicaciones simuladas), ¡buena suerte!