Usar GPS en Xamarin.Forms | DependencyService

Hola a todos los lectores del blog XamSharp, hace menos de una semana estaba intentando obtener la localización del dispositivo usando Xamarin.Forms y había leído acerca del Plugin de James Montemagno que es un paquete muy bueno, útil y fácil de usar pero lamentablemente no cubría las necesidades que yo necesitaba, así que vi una manera fácil pero un poco más tardada que es usando un DependencyService me funcionó tan bien que ahora quiero compartirlo con todos los lectores del blog!

 

Aplicación ejecutándose en dispositivos iOS y Android

El dispositivo Android me anda más lento que en el iPhone.

Comenzando

Lo primero que haremos antes que nada es agregar una interfaz llamada «IMyLocation» que es la que se tendrá el método que se comunicará entre ambas plataformas.

Nota: Se me paso a mi la letra i minúscula, pero en realidad era mayúscula

Imagen1.png

No olvidarnos de poner nuestra interfaz publica, agregaremos el método ObtainMyLocation y debajo un EventHandler que a su vez obtiene la información de otra interfaz que agregaremos abajo únicamente tendrá dos propiedades lat y lng

Imagen2.png

Configuración del proyecto Android

En el Manifiesto de las propiedades del proyecto .Android seleccionaremos ACCESS_FINE_LOCATION

Imagen3.png

De la siguiente manera se agregará una clase dentro del proyecto Android

Imagen12.png

El nombre de la clase será GetMyLocation

Imagen13.png

Dentro de esta clase podemos ver esta primera parte del código donde en la linea 13 hacemos uso de los espacios de nombre necesarios para la localización

  • 16.- Indicamos que será un DependencyServie
  • 18.- Utilizamos LocalionEventArgs que hereda de la Interfaz que creamos en un principio «ILocationEventArgs»
  • 26.- En la clase GetMyLocation heredamos de Java.Lang.Object, Nuestra interfaz y de ILocationListener
  • 36.- Usamos el método OnLocationChanged para cambiar continuamente la posición

Clic aquí para ver esta clase en GitHub

Imagen4

Segunda arte del código:

Como podemos observar hacemos uso del método que creamos en nuestra Interfaz principal, que también nos ayuda a actualizar la localización

Imagen5.png

Configuración del proyecto iOS

Dentro del info.plist agregaremos manualmente los permisos como se ve en la siguiente imagen

Imagen6

Una manera también de hacerlo es con código y podría ser de la siguiente manera

<key>NSLocationWhenInUseUsageDescription</key>

<string>Allow to get current location </string>

Dentro del proyecto iOS agregaremos una clase [Repetimos el mismo proceso que se hizo en el proyecto Android]

Clic aquí para ver la clase en GitHub

También hacemos uso del método definido en la Interfaz

Imagen7.png

Imagen8

Configurando el proyecto compartido

Dentro de nuestro proyecto PCL/.Net Standard crearemos un archivo tipo ContentPage (XAML), para que sea nuestra vista principal, la llamé Locationpage

Imagen9.png

CÓDIGO XAML

Dentro de esta vista tendremos un StackLayout con los siguiente elementos primordiales

  • Una Label para Latitud
  • Una Label para Latitud
  • Un Botón para visitar esa Posición

Dentro del botón agregaremos su propiedad Clicked, para asignarle la visita de la localización en el navegador del dispositivo

Imagen10.png

CODE-BEHIND

Dentro del code-behind instalnciamos nuestra Interfaz y en el método OnAppearing

le asignamos el valor de latitud y longitud traída de la Interfaz y la asignamos a los labels de la vista haciendo uso del método que se ejecuta sobre cada plataforma.

Dentro del evento del botón agregaremos una variable tipo string que equivalga a la página en internet «https://www.latlong.net/» pero le concatenamos el valor de los labels para así tener una URL

Seguido de eso estuve batallando un poco porque no me había dado cuenta que los labels contaban con comas «,» por eso en la línea 39 se hizo una pequeña modificación haciendo uso del método replace de C# para sustituir las comas por puntos

Como último usamos opcionalmente un Try, Catch para abrir el browser/ Navegador del teléfono y ver la localización que nos da la aplicación y corroborar que es correcta 🙂

Después de hacer esto estaremos listos para ejecutar la aplicación!

Imagen11.png

Ejecutando el proyecto

Para los dispositivos iOS nos mostrará el mensaje para dar permisos a la aplicación, seguido de la descripción que se agregó en el archivo info.plist, mientras que en Android nos arrojará la ubicación automáticamente

IMG_0439.PNG

Al dar permisos a la aplicación podremos ver como resultado la Latitud y Logitud de la ubicación del dispositivo y lo podemos ver reflejado en el navegador del teléfono

ezgif.com-video-to-gif (1)

 

¡Con esto terminamos el blog del día! espero que les haya gustado, pero sobre todo espero que hayan aprendido algo nuevo este día mis queridos Xamaritanos

No olviden seguir al blog para recibir notificaciones cada vez que suba nuevo contenido

Visita el código fuente en GitHub

15789-illustration-of-a-blank-glossy-rectangular-button-pv

Luis David De La Cruz Bautista

 

3 comentarios

Deja un comentario