En este video te explicamos en detalle todo el proceso para publicar una Aplicación Android…

Actualización posición geográfica dispositivo GPS Android
3.
Actualización posición geográfica dispositivo GPS Android
En este nuevo tutorial sobre Geolocalización en Android explicaremos cómo podemos mantener la posición del dispositivo GPS actualizada, controlando los posibles cambios que se produzcan.
Una de las principales funciones que un dispositivo GPS debe implementar es la capacidad de actualizar en todo momento su localización, sin necesidad de interaccionar con el mismo. Para dicha tarea se dispone de la clase LocationManager
y la interfaz LocationListener
.
Mediante el siguiente ejemplo, se podrán controlar los cambios, tanto en las coordenadas del dispositivo (actualizando sus valores) como las que se realicen en el proveedor de ubicación del dispositivo:
- Comenzaremos en primer lugar por declarar un método, que no devolverá ningún valor y que solo será accesible por la clase que lo implementa:
123private void actualizarPosicion(){ - El siguiente paso consistirá en asignar a una variable de la clase
LocationManager
, a partir del nombre, el servicio de localización a nivel de sistema . Este servicio permite a la aplicación obtener actualizaciones periódicas de la localización geográfica del dispositivo:
12LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); - Se define la interfaz
LocationListener
, que implementa una serie de métodos, encargados de controlar en todo momento los cambios que se produzcan en la localización del sistema (recibirá notificaciones delLocationManager
cuando se produzcan cambios):
123LocationListener locListener = new LocationListener(){ - El método
onLocationChanged()
será llamado cuando cambie la localización. Recibe como parámetro de entrada una variable de tipoLocation
:
123456@Overridepublic void onLocationChanged(Location location){Toast.makeText(MainActivity.this,"Coordenadas GPS actualizadas: " + "lat--> " + location.getLatitude() + " long--> " + location.getLongitude(),Toast.LENGTH_LONG).show()} - El método
onStatusChanged()
será llamado cuando se produzcan cambios en el estado del proveedor. Recibe como parámetro de entrada una variable de tipoLocation
, además de un valor entero con el estado del proveedor:- 0: proveedor fuera de servicio
- 1: proveedor temporalmente deshabilitado
- 2 : proveedor habilitado
y una variable de tipo
Bundle
para acceder a los datos del estado específico del proveedor:123456@Overridepublic void onStatusChanged(String provider, int status, Bundle extras){Toast.makeText(MainActivity.this,"Cambios en proveedor " + provider + " Estado-->" + status,Toast.LENGTH_LONG).show();} - El método
onProviderEnabled()
será llamado cuando el proveedor esté habilitado para el usuario. Recibe como parámetro de entrada el proveedor del servicio de localización:123456@Overridepublic void onProviderEnabled(String provider){Toast.makeText(MainActivity.this,"Proveedor habilitado " + provider,Toast.LENGTH_LONG).show();} - El método
onProviderDisabled()
será llamado cuando el proveedor esté deshabilitado para el usuario. Recibe como parámetro de entrada el proveedor del servicio de localización:1234567@Overridepublic void onProviderDisabled(String provider){Toast.makeText(MainActivity.this,"Proveedor deshabilitado " + provider,Toast.LENGTH_LONG).show();}}; - Por último se llama al método
requestLocationUpdates()
, cuya tarea será la de establecer la localización actualizada, recibiendo como parámetros de entrada el nombre del proveedor, el intervalo de tiempo entre cada actualización, distancia en metros entre localizaciones actualizadas, y la variable de tipoLocationListener
que actualizará la localización en caso de producirse nuevos cambios:123locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 0, locListener);}
Nota: En los siguientes enlaces podrás acceder a la documentación oficial sobre la clase LocationManager y la interfaz LocationListener.
Una vez implementado el método anterior, y lanzada la aplicación, se podrá comprobar como cualquier cambio en la localización del dispositivo GPS, producirá un mensaje en pantalla con las nuevas coordenadas. Además, si habilitamos/deshabilitamos la opción de ubicación del dispositivo desde los ajustes del teléfono, se mostrará un mensaje en pantalla indicando el estado del proveedor:

En caso de que deseemos acceder a la pantalla que permita habilitar la ubicación del dispositivo desde nuestra propia aplicación, bastará con añadir la siguiente línea, que mostrará los ajustes de dicha opción:
1 2 |
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0); |
En el próximo tutorial describiremos un proyecto Android en el que se visualizará la posición global del dispositivo móvil, mostrando los datos de latitud, longitud, altitud y precisión de la señal, y posteriormente se trasladarán dichos datos a un mapa de Google Maps.