¿Por qué locationmanager devuelve viejas correcciones de ubicación con new gettime-timestamp?
Tenemos una aplicación que cuando se intenta obtener una corrección de ubicación. Se escucha tanto en GPS y la red y tiene una matriz de decisión basada en el tiempo / precisión para determinar cuándo dejar de escuchar y qué arreglo para volver.
Hemos notado, en ocasiones, un comportamiento muy extraño. Utilizamos la forma clásica de ver qué edad tiene la solución, así:
- Administrador de Ubicaciones ProxmityAlert siempre dice entrar
- Android didUpdateHeading (gerente de locación)?
- ¿Cómo puedo detener al usuario durante mucho tiempo para obtener una corrección de ubicación?
- IsProviderEnabled (LocationManager.NETWORK_PROVIDER) devuelve false
- Calibración GPS androide
long age = now - newLocation.getTime(); if(age >= prefs.getLocationMaxAge()){ Log.d(TAG, "location too old."); return; }
Pero a veces, el location.getTime devuelto desde el sistema operativo tiene una edad de quizás 15-20 segundos, de acuerdo con la marca de tiempo devuelta, aunque podemos decir con certeza que es muy antiguo. Por ejemplo, si la corrección de longitud / latitud es de una posición que el teléfono estaba en 30 minutos atrás!
Parece que sucede tanto de Wi-Fi y la red, pero no GPS. Para mí, esto es totalmente loco. ¿Alguien más ha visto esto y hay alguna forma de evitarlo?
Lo hemos conseguido en un par de teléfonos diferentes, el más reciente es Samsung Galaxy S II .
La ayuda sería extremadamente agradable.
EDIT : Para ser realmente claro, el problema es que el "onlocationchanged" devolución de llamada es llamado por el sistema operativo con una ubicación con un timestamp edad de quizás un par de segundos, cuando sé con certeza que la longitud / latitud en el "nuevo" Es un lugar donde el teléfono no ha estado en por al menos 30 minutos.
Esto hace que sea difícil determinar con precisión dónde está el teléfono …
- Android: envía los datos de la ubicación en segundo plano periódicamente (cada 30 segundos) y solicita al servidor nuevos datos
- OnLocationChanged siempre devuelve la antigua ubicación
- OnLocationChanged no se llama automáticamente
- La llamada requiere permisos que pueden ser rechazados por el usuario.
- Cómo utilizar Android LocationManager y Listener
- LocationManager requestLocationUpdates no funciona
- obtener geolocalización después de 20 segundos
- LocationManager.requestLocationUpdates agregar o actualizar?
Parece que sucede tanto desde Wi-Fi y la red, pero no GPS
Esto parece justo, porque en el Wi-Fi y la red de células basadas en la triangulación, la precisión es muy mala. Es probable que utilicen ubicaciones en caché que datan de hace 30 minutos. A menos que usted no haya cambiado su sitio de la célula o se haya movido a otro edificio de modo que los nuevos APs se puedan descubrir, me temo que usted conseguirá solamente localizaciones en caché. Si desea ubicaciones nuevas, utilice el proveedor de GPS.
- ¿Está disponible la red en Android?
- Error de lectura: error en la biblioteca SSL, generalmente un error de protocolo