Windows Phone 8 SDK y Visual Studio 2012

WinPhone8Logo_thumb2

Hola a todos!

Desde ayer está disponible la nueva versión del SDK de Windows Phone, como vimos aquí. Hoy vamos a ver que nos ofrece el nuevo SDK en su integración con Visual Studio 2012.

Editor de manifiesto

Una de las mayores novedades en este aspecto es el nuevo editor para el archivo WMAppManifest.xml, que en versiones anteriores teníamos que tocar a mano, y ahora nos ofrece una interface gráfica para “casi” todas las opciones disponibles:

image

Como podemos observar en la imagen anterior, el editor se divide en cuatro partes:

Application UI

Nos permitirá definir opciones generales de la aplicación como pueden ser el icono de la aplicación, resoluciones soportadas, la plantilla de animación del tile, donde podremos elegir entre TemplateFlip que es la animación tradicional en la que el tile se da la vuelta, TemplateIconic que no efectúa animación y no permite tener un tile grande que ocupe todo el ancho o TemplateCycle que nos permite definir nueve imágenes que irán alternándose entre ellas de forma cíclica. También podemos definir la página inicial, el título y una descripción así como el título a mostrar en el tile.

Capabilities

Si has desarrollado en Windows 8 esta pestaña te sonará familiar, en ella podemos definir las capacidades de las que nuestra aplicación hace uso. Se han añadido nuevas características, muchas relacionadas con NFC e incluso el uso de mapas tendrá que ser declarado como una característica.

Requeriments

Muy parecida a la anterior, pero en este caso para requisitos indispensables de nuestra aplicación, como pueden ser el soporte a NFC, camara frontal… etc…

Packaging

Por último tenemos una sección donde podremos modificar la configuración de nuestro paquete, como idiomas sopotados, idioma por defecto, nombre de autor y de publicador o versión.

Aunque todo esto es un gran avance, existen cosas que deberemos definir a mano en el archivo XML, como son las extensiones. Las extensiones nos permitirán identificar a nuestra aplicación como proveedor de fondo de pantalla, o indicar que soportamos notificaciones en la pantalla de bloqueo y algunas cosas más muy interesantes, todo esto deberemos definirlo a mano en el XML, creando una sección Extensions justo a continuación de la sección Token.

Simulation Dashboard

Otra novedad que tendremos será el Simulation Dashboard, una pantalla que podemos obtener en el menú TOOLS > Simulation Dashboard y que nos permite controlar el ambiente de la simulación que tendremos en nuestro emulador:

image

Como podemos ver, nos permite lanzar recordatorios, bloquear o desbloquear la pantalla del emulador e incluso simular la velocidad y fuerza de la señal de red, con lo que podremos ajustar mucho más las pruebas sobre nuestra aplicación ahora que solo disponemos del emulador para realizarlas.

Device

Por último, cuando estemos editando un archivo XAML tendremos una pantalla de dispositivo, que nos permitirá en tiempo de diseño cambiar el tipo de dispositivo sobre el que trabajamos:

image

De esta forma, podemos cambiar la orientación, el tamaño y ratio de la pantalla, el tema de fondo (que solo sigue siendo negro y blanco, pensé que los de Microsoft se habrían dado a una vorágine de colores e imágenes, pero no, parece que las cosas siguen en su sitio xD) y el color de acento, con muchos más colores de acento nuevos.

Conclusión

Y hasta aquí las novedades del entorno, si ha estas mejoras le sumamos el  propio Visual Studio 2012, tenemos un entorno mucho más potente y robusto, más sencillo de configurar y que nos va a aportar más información para poder desarrollar nuestras aplicaciones de forma correcta.

Un saludo y Happy Coding!

Windows Phone 8 SDK ya está aquí

WinPhone8Logo

Hola a todos!

Hoy Microsoft a presentado al público el SDK de Windows Phone 8.0, después de varios meses de espera. Se puede descargar desde aquí. En este artículo quiero dar una vuelta rápida por los aspectos que más me han llamado la atención del SDK. Así mientras descargas e instalas el nuevo Windows Phone 8 SDK puedes enterarte de algunas novedades.

Nuevo entorno

La primera y mayor novedad es que por fin tendremos el SDK integrado en Visual Studio 2012. Podremos desarrollar tanto para Windows Phone 7.1 como para Windows Phone 8. De esta forma, si no vamos a migrar nuestras aplicaciones todavía, podemos seguir trabajando en ellas pero usando el nuevo entorno.

Pero no es solo una cuestión de usar Visual Studio 2012. El entorno para Windows Phone 7.X era bastante espartano. Pocas opciones especiales, edición de manifiesto desde el XML directamente. Todo esto ha mejorado y mucho, eso lo veremos mañana con más calma, porque realmente incorpora algunas opciones muy interesantes.

Emuladores… cuanto más mejor

Otra novedad vendrá de la mano de los emuladores, en el SDK de Windows Phone 7.1 teníamos dos emuladores, uno con 512 MB de RAM y otro con 256 MB. Este número crece ahora hasta los seis emuladores para aplicaciones Windows Phone 7.1 y cuatro para las aplicaciones Windows Phone 8.0. Los nuevos emuladores son:

  • Emulador WVGA: Este emulador cuenta con 1Gb de RAM, doble procesador y resolución de 480×800 píxeles.
  • Emulador WVGA 512MB: Igual que el anterior pero solo con 512MB de RAM, sería el nuevo dispositivo de gama baja.
  • Emulador WXGA:  Cuenta con 1Gb de RAM, doble procesador y resolución de 1280×768 píxeles.
  • Emulador 720P: Igual que los anteriores pero con una resolución de 1280×720 píxeles.

Además estos nuevos emuladores son máquinas virtuales de Hyper-V

image

Esto plantea una desventaja, es necesario para usar los emuladores tener un Windows 8 de 64 bits, virtualización por hardware en concreto soportar SLAT y tener HyperV instalado (es muy fácil, podemos activarla en los componentes de Windows). Si no tienes Windows 8 todavía, aprovecha estas ofertas de lanzamiento, puedes actualizar tu Windows 7 a Windows 8 pro por solo 30 € aquí.

Antes de instalar el SDK, es conveniente añadir nuestro usuario al grupo de Administradores de HyperV para evitar posibles problemas de permisos.

Debido a todo esto, observaremos que la primera vez que levantemos un emulador el tiempo de arranque del mismo se alargará hasta los 6 minutos, esto es así porque es el momento en el que se crea la máquina virtual, se arranca el sistema y se toma un snapshot. Una vez hecho esto, el resto de veces que arranquemos ese emulador, será casi instantáneo, hablando de que tardará solo los pocos segundos que tarde en recuperar el snapshot inicial. Mi recomendación: en cuanto termine la instalación activa todos los emuladores, lanzándolos desde Visual Studio para que así creen sus snapshots y todo vaya más rápido a partir de ese momento.

También a cambiado el aspecto de los emuladores:

image

Sorprende además que no nos encontramos ante una ROM capada solo con internet explorer. Estamos ante una ROM completa, nos permite jugar con todas las opciones de Windows Phone 8 como si nos encontrásemos ante un dispositivo real.

WinRT vs WinPRT

Además del emulador y el uso de Visual Studio 2012, las verdaderas novedades vienen en las nuevas APIs que trae el emulador. El runtime que usaremos para desarrollar en Windows Phone 8 se conoce como WinPRT (Windows Phone Runtime) y se basa en un subset del API de WinRT existente para Windows 8, ampliado con APIs específicas de Windows Phone 8:

image

En el gráfico anterior, el circulo rojo representa la totalidad de la API de WinRT, mientras que el círculo Azul representa la totalidad de la API de WinPRT, el área que se solapa es la parte de ambas APIs que se comparte entre ambas plataformas, la parte azul restante son ampliaciones a las APIs de WinRT que se han realizado especialmente pensando en el sistema operativo para teléfonos.

En este sentido, es especialmente interesante el API de Bluetooth y NFC, que es exactamente la misma que en Windows 8, no es que se parezca, es que es la misma, por lo que podíamos copiar y pegar el código entre dos proyectos y sería totalmente compatible. Mejor, podríamos implementar la lógica de uso de esta API en una Portable Class Library y compartirla entre ambos tipos de proyectos, aquí os dejo dos fragmentos de código del API de NFC, uno en Windows Phone 8 y otro en Windows 8, como podéis ver son idénticos:

// Windows Phone 8
private async void FindPeersWP8()
{ 
    Windows.Networking.Proximity.PeerFinder.Start();
    var result = await Windows.Networking.Proximity.PeerFinder.FindAllPeersAsync();
}
// Windows 8
private async void FindPeersWin8()
{
    Windows.Networking.Proximity.PeerFinder.Start();
    var result = await Windows.Networking.Proximity.PeerFinder.FindAllPeersAsync();
}

Pantalla de bloqueo

El nuevo SDK incluye APIs para trabajar en la pantalla de bloqueo. Podremos declarar que nuestra aplicación puede poner su icono en ella para notificaciones, podremos indicar un icono, al que se unirá el contador del tile principal y un texto. Nuestra aplicación también podrá trabajar como proveedor de imágenes para la pantalla de bloqueo. Todo esto, declarando el uso de estas extensiones en nuestro manifiesto y mediante una API muy sencilla.

Geo posición en background

Así mismo, también tenemos la posibilidad de que nuestra aplicación se ejecute en background para recibir notificaciones de cambio de geo posición. Han tratado el tema de la localización geográfica de forma muy especial. En Windows Phone 7.1 teníamos que usar trucos como deshabilitar el ApplicationIdleDetectionMode para que nuestra aplicación se ejecutase continuamente y así poder seguir recibiendo los eventos de coordenadas. Ahora simplemente indicaremos que deseamos que se reciba el cambio de posición en background, crearemos el código para recibir las coordenadas e indicaremos el cambio en metros mínimo para recibir la actualización. Automáticamente, aunque el usuario salga de la aplicación el sistema seguirá manteniendo vivo nuestro código y recibiremos los eventos de cambios.

Mapas

Esto es algo que me ha llamado la atención en especial. Aunque podremos seguir trabajando con el control de mapas tradicional, el incluido en el SDK 7.1 (sobre todo por retrocompatibilidad) se ha creado un nuevo control de mapas con mucha más información que el antiguo de Bing Maps, de forma sencilla tendremos cuatro modos cartográficos (aereo, satellite, carreteras e híbrido), podremos mostrar información para caminantes (esto suena muy Walking Dead) como por ejemplo donde encontrar escaleras o rampas, cambios de nivel, líneas de autobus… incluso podremos activar una propiedad llamada Landmarks que nos dará vistas 3D de edificios siempre que estemos en modo carreteras y que el zoom sea superior a 17 se activará la representación 3D como podemos ver en la imagen:

image

En este caso es una captura de Seattle, pero lo he probado en Bilbao, Madrid y Paris. Sorprende que tengan muchísimos datos 3D de ciudades europeas, esto no suele pasar.

Async/Await

En esta nueva versión ya no tendremos que hacer piruetas con CTPs, Async y Await incluido de serie.

Tipos de proyectos

En cuanto al tipo de proyectos también hay novedades, algunas de ellas sorprendentes:

image

Sorprende ver un proyecto con XNA. Para los fans decir que no, no se soporta XNA en Windows Phone 8. Este proyecto solo permite hacer aplicaciones para Windows Phone 7.1. Para Windows Phone 8 tenemos el proyecto de XAML y Direct3D que nos permite usar todas las APIs de Direct3D en nuestra aplicación C#.

Igualmente sorprendente el proyecto Windows Phone HTML5 App. Aunque su nombre nos puede llevar a equívocos, no se trata de un proyecto en el que podamos desarrollar nuestra aplicación de forma nativa en HTML5 como ocurre en Windows 8 y su WinJS. Se trata de un proyecto con XAML, en el que en la página principal se tiene un control webbrowser y una estructura de directorios para crear el contenido en HTML5, así que es más bien una especie de PhoneGap pero sin acceso nativo.

Por último es destacable que al crear un proyecto de tipo Windows Phone Databound App, además de generar datos de ejemplo que es lo único que hacía en Windows Phone 7.1. También nos crea un pequeño esqueleto de MVVM, no demasiado bien implementado a mi modo de ver, pero muy sencillo. Sin duda un paso en la dirección correcta.

En todos los proyectos, cuando el target sea Windows Phone 8, se incluirá por defecto un archivo de recursos y el código necesario para que hagamos nuestras cadenas localizables en varios idiomas. Con lo que ya no tendremos excusa.

También es muy importante que con esta nueva versión podremos seguir usando los proyectos de Test de .NET 4.5 para realizar las pruebas unitarias de nuestra aplicación. Ya no serán frameworks distintos, ni tendremos que temer incoherencias en las pruebas. el framework de .NET para Windows Phone incluido en este SDK tiene compatibilidad Binaria con .NET 4.5.

Capturas nativas desde el dispositivo

Aunque no es una característica propia del emulador, donde podremos seguir obteniendo capturas de pantalla con las herramientas, podemos obtener capturas en nuestro teléfono con Windows Phone 8 usando la combinación de teclas Apagar + Inicio. De esta forma podremos conseguir capturas para la Windows Phone Store mucho más realistas.

Conclusión

Este SDK es grande, trae muchas novedades y cambios. Iremos viendo todas esto y más con calma aquí en el blog, por ahora, empieza por descargarte aquí el SDK de Windows Phone 8 y juega con él:

Windows Phone 8 SDK

Un saludo y Happy Coding!

Presentación de Windows Phone 8

Hola a todos!

phone8

Hoy es el día! Por fin hoy se presentará al mundo la nueva versión de Windows Phone: Windows Phone 8. La presentación tendrá lugar en San Francisco, a las 18:00 hora local de España (GMT +1). Para todos los que no hemos podido ir a la presentación, existe una URL donde podremos seguirla mediante live streaming:

http://www.microsoft.com/en-us/news/presskits/windowsphone/

Esta semana pinta interesante para Windows Phone 8, primero esto y luego el Build donde han prometido “revelarnos” algunas cosas sobre el SDK… no te lo pierdas siguiendo el hashtag #eswpdev en twitter

Un saludo y Happy Coding!

[OFFTOPIC] MVP Windows Phone Development

Hola a todos!

Ayer fue un gran día, un principio de mes y de semana dificilmente superable. Y es que ayer recibí ese correo por parte de Microsoft que tanta ilusión hace:

“Estimado/a Josue Julian,
Enhorabuena. Nos complace presentarle el programa de nombramiento MVP de Microsoft® de 2012. Este nombramiento se concede a los líderes excepcionales de la comunidad técnica que comparten de forma activa su experiencia de alta calidad y de la vida real con otras personas. Le agradecemos especialmente la contribución que ha realizado en las comunidades técnicas en el área de Windows Phone Development a lo largo del pasado año.”

La verdad es que es una gran recompensa a mucho trabajo y un empujón a seguir trabajando más y más por la comunidad. Aunque llevo desde mitad de agosto casi sin escribir en este blog, no os preocupéis, un proyecto muy bonito que verá la luz pronto, y que espero que muchos disfrutéis,  me ha tenido ocupado pero ya falta poco para volver con más Windows 8 y Windows Phone!

Muchas gracias a todos por pasar de vez en cuando por este blog, al final esto es gracias a vosotros!!

Un saludo y Happy Coding!