Mi aplicación verifica a una hora específica si un usuario se encuentra en una ubicación determinada. Yo uso el gestor de alarma para iniciar un servicio que hace que esta llamada:Android: obtención confiable de la ubicación actual
locationManager.requestLocationUpdates(bestProvider, 0, 0, listener);
Y también comprueba:
locationManager.getLastKnownLocation(bestProvider);
pero estoy teniendo problemas cuando se ejecuta en un dispositivo real. Por un lado, es muy probable que getLastKnownLocation
sea el último lugar en el que se encontraba el GPS, que podría estar en cualquier lugar (es decir, podría estar a millas de la ubicación actual del usuario). Así que solo esperaré las devoluciones de llamada requestLocationUpdates
, y si no están allí en dos minutos, elimine el oyente y desista, ¿no?
Incorrecto, porque si la ubicación del usuario ya es estable (es decir, han usado GPS recientemente y no se han movido), entonces mi escucha no se volverá a llamar porque la ubicación no cambia. Pero el GPS se ejecutará hasta que se elimine mi oyente, agotando la batería ...
¿Cuál es la forma correcta de obtener la ubicación actual sin confundir una ubicación anterior con la ubicación actual? No me importa esperar unos minutos.
EDITAR: Es posible que me equivoque sobre el hecho de que el oyente no ha sido llamado, puede tardar un poco más de lo que pensaba ... Es difícil de decir. Apreciaría una respuesta definitiva aún.
¿Puede proporcionarnos algún código de ejemplo? Por ejemplo, ¿cómo esperarías 2 minutos o algo así si no se llama al oyente de la ubicación? – noah
Se agregó un fragmento de código – Fedor