Tutorial: Cómo incluir localización en tu propia aplicación
La geolocalización y la localización cada vez es más clave en las aplicaciones. Aquí enseñamos cómo incluirlas en tu propia app.
12 octubre, 2015 18:38
Cuando una aplicación utiliza la localización conseguimos un potencial enorme sobre las cosas que podemos llegar a hacer de forma inteligente con los usuarios y sus datos. Así, podemos incluso llegar a predecir acciones en base a localizaciones, tendencias…
Pero, ¿cómo integramos todas las novedades de la localización en nuestra propia aplicación?
Tutorial: Cómo incluir localización en tu aplicación
Lo primero que tenemos que hacer es preparar nuestra aplicación para recibir dichos datos y tratarlos. Para ello, tenemos dos tipos de permisos disponibles:
- ACCESS_FINE_LOCATION (afina todo lo posible la precisión)
- ACCESS_COARSE_LOCATION
Un ejemplo de cómo incluirlo en nuestro Manifest sería éste:
Además, tendremos que elegir cuál será nuestro proveedor de localización (al que pediremos los datos cuando sea necesario). Para ello, tenemos 3 disponibles:
- GPS_PROVIDER: El más preciso, utiliza el receptor GPS del dispositivo.
- NETWORK_PROVIDER: Utiliza los puntos de acceso WiFi y nuestra conectividad móvil para dar una posible localización del dispositivo
- PASSIVE_PROVIDER: Este proveedor es especial, pues no solicitará nueva información, utilizando la que otras aplicaciones han solicitado en algún momento dado. Sin ser el más preciso, es el que más ahorra batería.
Una vez escogidos éstos, podríamos crear una pantalla como la siguiente para hacer nuestra prueba:
Hecho esto, en nuestra Activity tendríamos que seguir los siguientes pasos:
- Comprobar que tenemos la localización disponible
- En caso de no estar disponible, podríamos solicitar al usuario que configurara el dispositivo móvil para tener algún tipo de localización disponible (utilizando los Intents con el valor Settings.ACTION_LOCATION_SOURCE_SETTINGS):
- Si efectivamente tenemos disponible la localización, ya podremos solicitar los datos, utilizando un LocationManager. Éste será el punto crítico y a optimizar como desarrolladores, pues muchas consultas innecesarias de este tipo derivan en un alto consumo de batería, lo que provocará el descontento de los usuarios:
- Si quisiéramos escoger el mejor proveedor posible, podríamos establecer criterios de precisión para saber cuál escoger para optimizar recursos:
A partir de ahí, con los datos recogidos, bastará usar la interfaz LocationListener, la cual nos permitirá disparar acciones ante los eventos relacionados con la localización:
- onLocationChanged()
- onStatusChanged()
- onProviderDisabled()
- onProviderEnabled()
A partir de ahí, ya es la imaginación del desarrollador la que entra en juego para utilizar dicha localización para su aplicación. Pero debemos recordar que es clave optimizar la gestión de datos de localización para un consumo eficiente de batería. Concretamente Google recomienda actualizaciones cada 5 minutos, pudiendo ser menores en caso de aplicaciones que estén en primer plano (por ejemplo, Google Maps mientras conducimos). Además, no debemos olvidar que el usuario podría tener desactivado los proveedores de localización, por lo que como programadores también interesa gestionar esta opción.
Esperamos que os haya resultado de interés el tutorial.