Obtener ubicación en tiempo real con Android y Kotlin

En este post te mostraré cómo obtener la última ubicación del usuario usando el lenguaje de programación Kotlin en Android.

Te enseñaré a conocer la última ubicación conocida y a escuchar los cambios de ubicación para saber cuando la posición del usuario cambia.

De este modo podrías vigilar la ubicación del usuario conforme se mueve, y ya después de eso puedes hacer cualquier cosa con la ubicación, por ejemplo enviarla a un servidor, colocarla en un mapa, etcétera.

Agregando librería de los Google Play Services

Primero hay que agregar una librería. Vamos a build.gradle y agregamos la última versión de los Google Play Services. Aquí vas a encontrar la última versión, en mi caso lo encontré así y entonces lo que agregamos al archivo es:

implementation 'com.google.android.gms:play-services-location:18.0.0'

Elegimos sync now y esperamos a que el Gradle se sincronice, descargue librerías, etcétera.

Mi gradle quedó así al final, solo como ejemplo:

Lo que importa es la línea 52.

Nota: recuerda que esta versión puede cambiar, y que siempre debes usar la última versión. Te dejé un link anteriormente para ir a al página oficial y conocer la versión actualizada.

Sobre los permisos

A partir de Android 6, debes obtener permisos en tiempo de ejecución además de indicarlo en el AndroidManifest. Yo acabo de hacer un post de cómo obtener los permisos de ubicación, te invito a leerlo.

Obtener ubicación en Android

Lo que vamos a hacer es crear una variable de tipo FusedLocationProviderClient. Esta variable nos va a permitir acceder a dos cosas:

  • Última ubicación conocida
  • Ubicación en tiempo real del usuario cada que la misma cambie

Es importante acceder a la última ubicación conocida (con lastLocation) en el init de nuestra app, pues debemos tener algo para empezar, ya que no sabemos cuándo va a cambiar la ubicación del usuario, por ello es que al inicio usaremos la última conocida.

También vamos a necesitar un LocationCallback pues vamos a suscribirnos a los cambios de ubicación, y cada que la ubicación cambie va a invocar a ese callback con la nueva ubicación del usuario.

Por otro lado, necesitamos un LocationRequest para solicitar notificaciones del cambio de ubicación. En esta solicitud de ubicación indicamos cada cuánto queremos recibirlas, la prioridad y otras cosas que puedes personalizar.

Estamos solicitando las actualizaciones de ubicación en la línea 15, pero antes definimos el callback en la línea 7. En esa función vamos a recibir un arreglo de Location, y lo que yo hago es imprimirla.

Aquí la función que imprime:

Nota: yo solo accedo a latitude y longitude pero puedes acceder a otras propiedades como la precisión o el proveedor.

Nota 2: es importante encerrar el acceso a la ubicación en un try catch esperando una excepción de tipo SecurityException ya que puede que el usuario no haya dado permiso.

Poniendo todo junto

Ahora te mostraré el código completo de mi fragmento. Yo estoy solicitando los permisos de ubicación y cuando los obtengo es cuando invoco a la última ubicación, la imprimo y luego me suscribo a las actualizaciones de ubicación.

Si te sirve de algo, te lo dejo aquí. Recuerda tomarlo como guía, y no copies y pegues sin entender el código.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario