Del curso: Domina .NET MAUI

Usando el dispositivo de geolocalización - Tutorial de .NET MAUI

Del curso: Domina .NET MAUI

Usando el dispositivo de geolocalización

La empresa ahora nos ha solicitado geolocalizar las inspecciones, es decir, guardar la información de ubicación geográfica en cada uno de los registros de inspecciones que creamos en la aplicación. Lo primero que tenemos que hacer es abrir el manifiesto de Android para agregar los permisos de FINE_LOCATION y también de COARSE_LOCATION. estos dos que se llaman ACCESS_COARSE_LOCATION Y FINE_LOCATION que nos permiten acceder al dispositivo de geolocalización. Muy bien, vamos a guardar entonces el manifiesto, y ahora lo que vamos a hacer es abrir el ViewModel de InspectionViewModel, ya que aquí lo que quiero hacer es implementar un método que me permita obtener la información de ubicación geográfica. Entonces, vamos a escribirlo, vamos a ponerle Task, esto quiero que regrese Location. Como puedes ver, esta clase pertenece a Microsoft.Maui.Devices.Sensors. Y aquí lo vamos a poner de nombre algo así como GetCurrentLocation, y adentro de esta implementación, vamos a usar la clase GeolocationRequest, vamos a crear un nuevo request y aquí lo vamos a instanciar. Ahora, en el constructor de GeolocationRequest, lo que podemos hacer es configurar cuál es la precisión que queremos que tenga esta detección de ubicación. Vamos a ponerle, digamos, GeolocationAccuracy, podemos utilizar Medium o Low o sus diferentes valores. Sin embargo, toma en cuenta que esto va a estar en función de la batería que tengamos en el dispositivo, es decir, entre mayor precisión, más va a gastar recursos de batería. En este caso, vamos a ponerle Medium. Y también me permite establecer este TimeSpan con un timeout, digamos FromSeconds, vamos a ponerle 5 segundos, esto para esperarnos máximo 5 segundos para obtener la ubicación geográfica. Ahora, ya tengo este request, lo que voy a hacer ahora es usar la clase Geolocation, que está aquí. Voy a obtener el dispositivo predeterminado y voy a invocar este método llamado GetLocationAsync, pasándole este request que tenemos por acá arriba, y esto lo vamos a guardar en un objeto de tipo location. Vamos a esperar esto, vamos a marcar esto como async. Entonces, esto está regresando el objeto location que tenemos acá, y justamente eso es lo que vamos a regresar en este método. Ahora, ya puedo utilizarlo en esta parte que está aquí. Lo que necesitamos hacer es modificar la entidad de Inspection para incluir, obviamente, la latitud y la longitud. Vamos a hacer esto, prop double? Lat, y lo mismo para Lon; latitud, longitud. Con esto yo creo que es suficiente, también hay otros datos con respecto a la ubicación geográfica, por ejemplo, la altitud, pero no lo necesitamos en este video. Entonces, por acá vamos a ponerle Lat =. Aquí, location = GetCurrenLocation. Esto lo vamos a esperar. Una vez obtenido esto, location.Latitude y Lon, Longitude, así como está, y con esto, entonces, estamos guardando esta ubicación geográfica. Bien, con esto ya estamos listos para probar la aplicación. Recuerda desinstalar la aplicación del emulador para que ahora tengamos ese par de propiedades Lat y Lon en la tabla de Inspecciones. Una vez más, aquí tenemos la aplicación, vamos entonces a Visitas, digamos sucursal norte. Vamos a hacer una nueva inspección. Vamos a abrir la cámara. Aquí vamos a tomar esta foto. Vamos a Aceptar, guardamos la inspección, y ahora me está pidiendo permiso para acceder a la ubicación del dispositivo, le voy a decir que sí, se va a tardar unos segundos y después va a guardar justamente este registro de inspección. Para corroborar esto, voy a descargar el archivo de SQLite y lo voy a abrir para mostrarlo aquí en pantalla. Para esto, voy a pausar el video. Aquí en DB Browser for SQLite, ya abrí la base de datos, vamos hacia Inspecciones y vemos que, efectivamente, está la Latitud y la Longitud que tiene en este momento el emulador, que es un punto cercano a Mountain View en California. Claro, esto lo puedes modificar, si así lo deseas, directamente en la configuración del emulador.

Contenido