jueves, 5 de diciembre de 2013

Obteniendo la localización del teléfono (GPS) con C# en Windows Phone/ Windows 8 App

Con el fin de ahorrarme unas cuantas respuestas a correos electrónicos, voy a plasmar aquí un pedazo de código fuente en C# que sirve para obtener las coordenadas, posición o localización (como más os guste) de un dispositivo con Windows Phone 8 o aplicación de la tienda de Windows 8.

Obviamente es un código a modo de prueba de concepto, vosotros deberéis adaptarlo adecuadamente según la necesidad y por supuesto realizar las comprobaciones de errores pertinentes, más allá del Try/Catch de rigor.

using System;
using Windows.Devices.Geolocation;

namespace GPSTesting
{

public delegate void GeoCallback(double Latitud, double Longitud)

// Definición de la clase ... blah, blah, blah ...

public async void GPSCoordenadas(GeoCallback callback)
{
    try
    {
        Geolocator Localizador = new Geolocator();
        Localizador.DesiredAccuracy = PositionAccuracy.Default;
        Geoposition Posicion = await Localizador.GetGeopositionAsync();
       callback(Posicion.Coordinate.Latitude, Posicion.Coordinate.Longitude);
    }
    catch (Exception)
   {
        // ...
   }
}
}

¡Así de fácil! Que os aproveche.

Emulador de Windows Phone 8

Si tu intención es desarrollar aplicaciones para Windows Phone 8, una de las cosas que inevitablemente deberás conocer son los requisitos hardware/software que necesitarás.
 
A nivel de software, sin duda una de las soluciones más lógicas sería utilizar el SDK correspondiente, el Windows Phone SDK 8.0 y como no podía ser menos, el sistema deberá ser un Windows 8 Pro o superior.
 
Ahora bien, en la parte del hardware la cosa se te puede complicar un poco, debido a los requerimientos del sistema necesarios para poder ejecutar el "Emulador de Windowsl Phone 8". Cuando digo "requerimientos necesarios", en realidad lo que quiero decir es "Requerimientos OBLIGATORIOS".
 
A nivel de BIOS/CPU, tu equipo deberá soportar las siguientes características:
 
  • Virtualización Hardware (Hardware-assisted Virtualization)
  • Traducción de direcciones de segundo nivel (SLAT - Second Level Address Translation)
  • Prevención de ejecución de datos por Hardware (DEP - Data Execution Prevention)
 
Además, necesitarás:
  • 4 GB de RAM o más
  • Por supuesto 64 bits
  • Windows 8 Pro de 64 bits
 
A nivel de red:
  • DHCP
  • Configuración automática de DNS
 
Ya en el sistema operativo deberás activar Hyper-V y tu usuario deberá pertenecer a un grupo de administradores de Hyper-V para evitar problemas de permisos con el emulador.
 
De todo esto, es posible que una de las cosas que más te pueda provocar dolores de cabeza sea SLAT. En cualquier caso, para saber si tu equipo reúne las condiciones adecuadas, puedes hacer uso de la herramienta COREINFO de Mark Russinovich, que puedes descargar en Technet de Microsoft (los vagos aquí tenéis el enlace http://technet.microsoft.com/en-us/sysinternals/cc835722.aspx)
 
Una vez ejecutéis dicha herramienta y observéis los resultados que os muestra, no desesperéis a la primera de cambio, quizás tengas una última oportunidad de reunir los requisitos. Por ejemplo, entra en la BIOS de tu equipo y comprueba si la virtualización está activada.
 
Ni que decir tiene que si tu equipo no reune tales condiciones, la mejor opción es adquirir un móvil con Windows Phone 8 para hacer el testeo de tus aplicaciones, algo que sin duda, siempre es recomendable incluso utilizando previamente el emulador.
 
Nuevamente tocará invertir para ampliar infraestructura de desarrollo.