La ubicación es una tarea complicada, cuando tienes una batería de duración limitada y cuando no hay señal de GPS en edificios y en áreas con muchos edificios grandes, etc. Pero Android lo hace mucho más fácil. Cuando solicita una ubicación, solo tiene que especificar qué precisión necesita.
Si especifica que desea un accuracy
ejemplo *100 meters*
, Android intentará obtener la ubicación y, si puede obtener una ubicación con una precisión de 70 metros, se la devolverá, pero si Android puede obtener una ubicación con una precisión superior a 100 metros, su aplicación esperará y no recibirá nada hasta que haya una ubicación con tal precisión.
Por lo general, Android primero obtendrá el ID de celda y luego lo enviará al servidor de Google, que mapea dichos ID de celda y el servidor devolverá una latitud y longitud con una precisión que es baja, por ejemplo, 1000 metros. En este momento, Android también intentará ver todas las redes WiFi en el área y también enviará información sobre ellas al servidor de Google y, si es posible, el servidor de Google devolverá una nueva ubicación con mayor precisión, por ejemplo, 800 metros.
Para entonces, el GPS estará encendido. El dispositivo GPS necesita al menos 30 segundos desde un arranque en frío para obtener una solución, por lo que si puede obtener una solución, devolverá la latitud y la longitud, pero nuevamente con una precisión, que será la más alta posible para un ejemplo de 100 metros. Cuanto más tiempo funcione el GPS, mayor precisión obtendrá.
Aviso importante: los dos primeros métodos requieren una conexión a Internet. Si no hay conexión de datos, tendrá que esperar al GPS, pero si el dispositivo está en un edificio, probablemente no obtendrá ninguna ubicación.