Cómo implementar "un-dwell" en las geofencias android?
Tengo un problema para entender las geofencias de Androids.
Problema real : Utilicé los eventos Enter
+ Exit
de googles geofence-api, pero en muchos dispositivos la señal es tan inexacta que salta dentro y fuera de una valla (los saltos son mayores que el radio 400m a menudo).
- Obtener la altura real de la pantalla (android)
- android: <soportes-pantallas> Etiqueta
- Cómo crear una actividad de configuración para Android Live Wallpaper
- Diseño personalizado para DialogFragment OnCreateView vs. OnCreateDialog
- Escala una vista para el tamaño de otra vista usando ValueAnimator
Solución planificada : Así que quiero usar Dwell
para "suavizar" esto. Si la ubicación se mantiene dentro de una valla durante un minuto, habita sucede. Hasta aquí todo bien. Pero ¿cómo puedo detectar la licencia de una valla? Cuando utilizo Exit
, varias Exit
pueden ocurrir debido a esas salidas de señal. Lo que necesito es una especie de "undwell", cuando dejo la geofence por más de un minuto.
Quiero evitar la reimplementación de todo el Geofence con lógica personalizada que se registra en repetidas geo-ubicaciones repetidas y filtrar pequeños outliers.
Pregunta: ¿Hay algo en el geofence-api para lograr un "undwell"? ¿O hay una mejor práctica cómo comprobar si una Exit
es una salida real?
- DataOutputSteam me está lanzando una 'java.io.IOException: inesperado final de la secuencia'?
- Analizar notificación de inserción abierta en diferentes actividades Android
- Extras de Android SDK Manager
- Enviar correo automáticamente en fondo en Android
- LibGDX - La aplicación se bloquea cuando llama a TiledMapRenderer.render ()
- ¿Es esto cómo programar un método java para que se ejecute 1 segundo después?
- Java: La excepción en sí es nula
- Iniciar una intención de cámara, pero no guardar imagen
public long lastEnterTime = 0; public void initTimer(){ Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { if(lastEnterTime!=0 && System.currentTimeMillis() > lastEnterTime + 1000*60){ lastEnterTime = System.currentTimeMillis(); onRealEnter(); } } },0,1000); } public void onRealEnter(){ } public void onEnter(){ lastEnterTime = System.currentTimeMillis(); } public void onExit(){ lastEnterTime = 0; }
En Google Geofences, el evento Enter se activa cada vez que se introduce una geofence, el evento Exit se activa cada vez que se cruza el boundry de Geofence. También Dwell evento desencadena cuando te quedas dentro de un geofence durante un intervalo de tiempo especificado.
En tu caso, si sigues saltando dentro y fuera de una geofencia en menos de un minuto, Dwell nunca sucederá.
Si ingresa una geofencia, ingresa eventos desencadenantes y permanece dentro durante un minuto o más, la interrupción sucederá y después de que ocurra la interrupción, si observas cualquier evento de salida , puedes utilizar ese evento de salida como una salida real.
Nota: También puede aumentar el radio de Geofence.
Espero que mi respuesta sea clara para usted. 🙂
Esto es sólo una idea, pero para cada área se pueden registrar dos geofences con diferentes radios. Regístrese para escuchar DWELL para la geofence con el radio más pequeño, y para EXIT para la otra.