[Materiales] Eventos de Noviembre

Hola a todos!

WinPhone8Logo

Este mes de Noviembre he estado rodando por Madrid y Bilbao, haciendo una serie de eventos sobre Windows Phone 8. En ellos me he centrado en las novedades que esta versión del sistema nos ofrece. Desde las características de Visual Studio 2012 y los emuladores hasta el uso del API de voz, pasando por la localización geográfica en background o los nuevos mapas y las opciones que nos ofrecen.

En total en cada charla, aunque cada una ha sido un poco distinta, hemos visto unas seis demos:

  • Mapas incrustados con vista 3D, rotación y movimiento.
  • Lanzadores de mapas
  • Comandos de voz
  • Reconocimiento de voz
  • Text To Speech

Para los que tengáis curiosidad y os apetezca repasar el código y la presentación con calma o no hayáis podido asistir, aquí os pongo las diapositivas en SlideShare a vuestra disposición:

Y por supuesto, para que juguéis aquí está el código completo de los seis ejemplos:

Un saludo y Happy Coding!

[Artalde.Net] Windows Phone 8: Que hay de nuevo!

Hola a todos!!

artaldeWinPhone8Logo

A principios de mes publiqué un post sobre los eventos en los que participaría. Aprovecho hoy para ampliarlos!

El día 27 de Noviembre estaré con el grupo de usuarios .net de Euskadi, Artalde.Net,  dando una charla sobre Windows Phone 8, así que si estás por la zona no dudes en acudir, que luego nos iremos de pintxos!! En la charla veremos las nuevas herramientas que incorpora Visual Studio 2012, los emuladores, hablaremos de las novedades en mapas, localización, voz… incluso veremos como poder compartir código entre Windows 8 y Windows Phone 8 para ser mucho más efectivos en nuestros desarrollos…

Aquí tenéis el enlace de registro al evento: http://artalde-estw.eventbrite.com/#

nokia emulatormaps

Espero veros por allí!

Un saludo y Happy Coding!

Windows Phone 8: APIs de trabajo con voz

Hola a todos!

Hoy vamos a examinar una de las principales novedades que incorpora Windows Phone 8: Las APIs de voz. Aunque el reconocimiento de voz ya estaba disponible en Windows Phone 7.X, no existían APIs que pudiésemos consumir para incluir este tipo de funcionalidad en nuestras aplicaciones.

Pero con Windows Phone 8, esto ha cambiado. Podemos usar el reconocimiento de voz en nuestros proyectos por tres vías distintas:

  • Comandos de voz. Nos permitirán ejecutar acciones sobre nuestra aplicación mediante órdenes verbales.
  • Voz a texto. Reconocimiento de voz, nos devolverá el texto reconocido de lo que el usuario haya dicho.
  • Texto a voz. Sintetización de voz. Dado un texto, será leído.

Para las tres funcionalidades necesitaremos incluir en nuestro manifiesto la capacidad ID_CAP_SPEECH_RECOGNITION, de lo contrario obtendremos una excepción al intentar usarlas.

Comandos de voz

Como ya hemos mencionado, los comandos de voz nos permiten dar ordenes al dispositivo de forma verbal. Definimos las órdenes soportadas mediante archivos de definición de comandos de voz (VCD, Voice Commands Definition). Estos archivos son XML con la siguiente estructura:

<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.0">
  <CommandSet xml:lang="es-ES">
    <CommandPrefix>Kit</CommandPrefix>
    <Example> ayudame</Example>

    <Command Name="HelpMe">
      <Example> ayudame</Example>
      <ListenFor> ayudame </ListenFor>
      <Feedback> Estoy en camino Michael... </Feedback>
      <Navigate Target="OnTheWay.xaml" />
    </Command>
  </CommandSet>
</VoiceCommands>

En primer lugar encontramos el nodo CommandSet, donde especificamos el idioma del comando y que contendrá los diferentes comandos. A continuación tenemos el nodo CommandPrefix, este indica el nombre que debe ser reconocido y asignado a la aplicación. La acción central se encuentra en el nodo Command, que define la acción propiamente dicha. Le asignamos un nombre único a cada comando y definimos el texto que debe escuchar en el nodo ListenFor, el feedback que debe mostrar al usuario una vez que haya reconocido un comando y la página XAML dentro de nuestra aplicación a la que deseamos que navegue al recibir este comando. Dentro de un archivo VCD podemos tener tantos comandos como deseemos.

Algo importante es que recordemos establecer como contenido y copiar siempre en las propiedades del archivo VCD.

Una vez que tenemos definido nuestro comando, solo nos queda registrarlo con el sistema operativo. Para ello usaremos la clase VoiceCommandService, en concreto el método InstallCommandSetsFromFileAsync, al que pasaremos la ruta de nuestro archivo VCD, con el esquema ms-appx:

await VoiceCommandService.InstallCommandSetsFromFileAsync(new Uri("ms-appx:///Commands.xml"));

Por último solo nos queda tener la página de destino del comando (OnTheWay.xaml) lista y podremos probar la aplicación. Para ello, solo necesitamos ejecutarla en un emulador o en el dispositivo (botón derecho sobre el proyecto > Deploy) y presionar durante unos segundos el botón inicio. En ese momento aparecerá la pantalla de reconocimiento de voz, donde podremos decir “kit ayudame” y debería aparecer Kit en pantalla!!

image

Para que funcione correctamente, debemos tener el emulador o el dispositivo configurado en idioma español. Si queremos soportar varias culturas, podemos hacer distintos archivos, uno para cada cultura, indicando en el CommandSet la cultura que deseamos usar en cada uno de ellos.

Voz a texto

Otra gran utilidad que podemos incluir en nuestra aplicación es el reconocimiento de voz y su traslado a texto plano que podamos usar y procesar. Para esto necesitaremos añadir otra capacidad más a nuestra aplicación: ID_CAP_MICROPHONE, además de la capacidad de reconocimiento de voz que ya indicamos anteriormente.

Para el reconocimiento de voz usaremos el namespace Windows.Phone.Speech.Recognition. Exactamente la clase SpeechRecognizerUI, que nos muestra la interface standard de reconocimiento de Windows Phone 8. En esta clase podemos indicar en su propiedad Settings, distintos parámetros como pueden ser el texto de ejemplo a mostrar, el texto de cabecera (“Escuchando…”) también podemos cambiarlo, si queremos que el texto reconocido se lea al usuario automáticamente para confirmarlo y si queremos mostrar una página de confirmación al usuario. También tenemos la propiedad Recognizer. Esta propiedad nos permitirá cambiar el modulo de reconocimiento de voz que usa Windows Phone (solo para esa ejecución, no es un cambio permanente en el sistema) por otro distinto, por ejemplo en otro idioma.

private async void PressToSpeech_Click(object sender, RoutedEventArgs e)
{
    SpeechRecognizerUI speechRecognizer = new SpeechRecognizerUI();

    var spanishRecognizer = InstalledSpeechRecognizers.All.Where(sr => sr.Language == "es-ES").FirstOrDefault();

    speechRecognizer.Settings.ExampleText = "Esto es una prueba";
    speechRecognizer.Settings.ListenText = "Vamos, habla!!";

    speechRecognizer.Recognizer.SetRecognizer(spanishRecognizer);

    var result = await speechRecognizer.RecognizeWithUIAsync();

    if (result != null)
        txtRecognized.Text = result.RecognitionResult.Text;
}

En este ejemplo filtramos la colección InstalledSpeechRecognizers para buscar un reconocedor en castellano y a continuación usamos el método SetRecognizer de la propiedad Recognizer para establecerlo. Por último solo nos queda llamar a RecognizeWithUIAsync y esperar el resultado.

image

Text to Voice

Por último pero no menos importante, podemos realizar la operación contraria: escribir texto en nuestra aplicación y que el sintetizador de Windows Phone lo lea. Para ello usaremos el namespace Windows.Phone.Speech.Synthesis, en concreto la clase SpeechSynthesizer. De forma parecida a la clase SpeechRecognizerUI, podemos también elegir el sintetizador que deseamos usar de la clase InstalledVoices y la estableceremos con el método SetVoice. Por último solo tendremos que llamar al método SpeakTextAsync pasando el texto que deseemos como parámetro:

private async void SpeakText_Click(object sender, RoutedEventArgs e)
{
    SpeechSynthesizer speechSynth = new SpeechSynthesizer();

    var synth = InstalledVoices.All.Where(iv => iv.Language == "es-ES").FirstOrDefault();

    speechSynth.SetVoice(synth);

    await speechSynth.SpeakTextAsync(txtText.Text);
}

Conclusión

No sé que os parecerá a vosotros, pero a mi me encanta lo sencillo de implementar que es el reconocimiento de voz en cualquiera de sus tres sabores (comandos, voz a texto, texto a voz) y le veo una utilidad increíble. Todos deberíamos implementarlo en nuestras aplicaciones y hacerlas así mucho más accesibles a cualquier persona.

Como siempre, aquí os dejo tres proyectos de prueba para que veáis el código en funcionamiento y podáis jugar con el.

Un saludo y Happy Coding!

[Libro] Introducción al desarrollo en Windows 8 y Windows Phone 8

Hola a todos!

Estos últimos meses han sido una auténtica locura, es lo que tiene no saber decir no a todo proyecto interesante que cae en tus manos. Al mismo tiempo que hacía de mentor en el Megathon de Bilbao y peleaba con WinRT para sacar adelante las demos de Visual Studio 2012, gestaba un nuevo proyecto, plasmado en forma de libro, que por fin hoy ve la luz.

350-Introduccion-Win8

Junto con Ibon Landa y Rafael Serna, incansables compañeros en la mayoría de proyectos en los que me embarco, hemos creado un libro que pretende introducir al lector en el mundo del desarrollo en Windows 8 y Windows Phone 8, usando XAML y C#. ¿Porqué dos sistemas? Por que Windows 8 y Windows Phone 8 comparten gran parte del stack tecnológico y es muy sencillo compartir conceptos y código entre ellos.

¿Qué podemos encontrar en este libro? Pues un poco de todo, el libro consta de 5 capítulos, con unas 200 páginas en total:

  • Una introducción a ambas plataformas, conceptos, estilos, herramientas…

  • Todo un capítulo dedicado a MVVM: Implementar enlace a datos, propiedades, ViewModels, Notificación de cambios, comandos, locators…

  • XAML: El porqué y el como del lenguaje XAML: Composición de una aplicación Windows 8 y Windows Phone 8, Microsoft Blend, estilos, plantillas, recursos y elementos de layout como el canvas, grid o VariableSizedWrapGrid.

  • Interfaz de usuario: Lo más importante de una plataforma, es adaptarnos a ella y mimetizar nuestra aplicación con el estilo que impone. Dedicamos todo un capítulo a integrar la navegación en MVVM, tanto en Windows 8 como en Windows Phone 8, a localizar aplicaciones en ambas plataformas y aprender a usar los elementos más comunes: FlipView, GridView, SemanticZoom, orientación, panorama, pivot, control de multiples resoluciones… todo lo necesario para crear una interfaz de usuario competente en Windows 8 y en Windows Phone 8.

  • Por último pero no menos importante, examinamos las diferentes opciones de publicación y el proceso para que una aplicación llegue a la Windows Store y a la Windows Phone Store. Durante más de 20 páginas examinamos el procedimiento para publicar en cada tienda nuestra aplicación.

Todo esto, aderezado con 32 ejemplos completos con código fuente para ambas plataformas con los que cualquiera, no importa los conocimientos previos que tenga, podrá crear una aplicación. completa, usando buenas prácticas y los elementos visuales adecuados, tras leer este libro. Además a un precio realmente increíble, en Campus MVP están que lo tiran y puedes conseguir el PDF por solo 10€ aquí. Pero lo mejor es que puede salirte totalmente gratis.

 

Este libro, “Introducción al desarrollo en Windows 8 y Windows Phone 8” es solo una parte de uno mucho más grande en el que estamos trabajando y que verá la luz a principios de Enero de 2013. Hemos querido sacar esta versión reducida para que podáis hincarle el diente lo antes posible y empezar a desarrollar. Cuando se publique el libro definitivo, que se llamará simplemente “Desarrollo en Windows 8 y Windows Phone 8” podréis adquirirlo y se os descontará el importe integro que habéis pagado por este. De esta forma, ahora solo pagáis un pequeño anticipo, podéis empezar a leer y aprender sobre estas dos increíbles plataformas y en Enero comprar el libro final con un jugoso descuento. ¿Un trato redondo no?

¿Qué más tendrá el libro final? Pues muchas cosas, en total más de 500 páginas, en el hablamos de:

  • Pruebas unitarias para ambas plataformas.

  • Inyección de dependencias y servicios.

  • Ciclo de vida de aplicaciones.

  • Acceso al sistema, contratos, extensiones, lanzadores, comunicación app2app.

  • Reconocimiento de voz.

  • Live tiles, notificaciones, MPNS.

  • Comunicaciones: OData, WCF, REST.

  • NFC y Bluetooth.

  • GPS, mapas y sensores.

  • Windows Azure y Mobile Services.

  • In app purchase.

  • Más de 100 ejemplos completos con código fuente.

  • Además de todo lo contenido en este libro de introducción.

300-libro-Win8

Pues no hay mucho más que decir, si te interesa el desarrollo tanto para Windows 8 como para Windows Phone 8, o para cualquiera de ellos, puedes adquirir ya este nuevo libro aquí.

No me quiero despedir sin agradecer a Ibon y a Rafa su ayuda en este proyecto, es un placer poder trabajar todo los días con gente genial que te insipira y te empuja a mejorar y a esforzarte. ¡GRACIAS CHICOS!

Un saludo y Happy Coding!

[Workshop] Localización y mapas en Windows Phone 8

Hola a todos!

Ayer tuve el placer de participar una vez más en el AppCircus Madrid que se celebró en la Universidad Rey Juan Carlos de la mano de Oscar Gutiérrez de Nokia. En esta ocasión hable sobre las nuevas opciones de mapas y localización disponibles en Windows Phone 8 y terminamos haciendo una aplicación de ejemplo con la que obtener indicaciones de donde habíamos aparcado el coche!

Os dejo la demo que desarrollamos en directo, que podéis descargar aquí

También la presentación PowerPoint:

Un saludo a todos y Happy Coding!

Windows Phone 8: Eventos, Eventos, Eventos

Hola a todos!

Ahora que tenemos nuevo SDK entre nosotros, es hora de coger la mochila y salir a la carretera para hablar un poco de como desarrollar aplicaciones para él. Este mes de Noviembre viene bien cargado con tres eventos, dos en Madrid y uno en Bilbao:

8 de Noviembre: AppCircus Madrid

app-circus

El  8 de Noviembre estaré junto a Oscar Gutiérrez de Nokia Spain hablando y demostrando las novedades en mapas y geo localización incluidas en Windows Phone 8. Para ello, tendremos un mano a mano entre Symbian y Windows Phone para desarrollar una aplicación que haga uso de estas características.

¿Donde y cuando? En la Universidad Rey Juan Carlos, campus de Fuenlabrada, aulario III. Empezaremos a las 10:30 con el registro y el concurso AppCircus y a las 13:00 empezará nuestro taller sobre Windows Phone.

Registro: http://appcircus.com/event/appcircus-en-madrid

 

21 de Noviembre: Descubre Windows Phone 8

uc3m-logo-con-nombre

El 21 de noviembre estaré de nuevo en Madrid, en la Universidad Carlos III con el club .NET hablando sobre todas las novedades de Windows Phone 8 para desarrolladores. Aunque es un evento principalmente para estudiantes, si te apetece venir puedes hacerlo. hablaremos sobre la nueva pantalla de bloqueo, limites de memoria, cambio en los modelos de ejecución, nuevos elementos, mapas, reconocimiento de voz… También tendremos a Oscar Gutiérrez de Nokia un rato para hablarnos de la plataforma, sus novedades y ventajas.

¿Donde y cuando? En la Universidad Carlos III de Madrid, Avda. de la Universidad Nº30, Leganés. Empezaremos a las 18:00 y estaremos hasta que nos echen a las 20:30 o no quede nadie despierto, lo que ocurra primero.

Registro: No hace falta registrarse!

 

26 de Noviembre: AppCircus Bilbao

app-circus

El 26 de Noviembre vuelvo a reunirme con Oscar Gutiérrez de Nokia Spain en Bilbao. Por primera vez llega el AppCircus a tierras euskaldunas, para celebrarlo montaremos un taller donde repasaremos lo más interesante y nuevo de Windows Phone 8. Haremos algunas demos, enseñaremos mucho código y discutiremos sobre lo bueno y lo malo de la plataforma. Además de nuestra charla, estará el concurso AppCircus, donde podéis presentar vuestras aplicaciones. Entre todos los asistentes se sorteará un Nokia Lumia 800.

¿Donde y cuanto? En la Universidad Deusto, Facultad de Ingeniería, edificio ESIDE. Avenida de las universidades 24. Empezaremos con la charla a las 10:00 de la mañana, y después llegará el concurso AppCircus, Networking y premios hasta las 13:45.

Registro: http://appcircus.com/event/appcircus-en-bilbao

 

Con todos estos eventos no tienes excusa!

Con tres eventos, en Madrid y Bilbao, no tienes excusa para no aprender todo lo necesario para desarrollar con Windows Phone 8! Además, si asistes a alguno de ellos podrás probar un Lumia 820 y verlo en vivo y en directo.

Si te quedas con ganas de más, tranquilo, estoy preparando otra tanda para diciembre y quien sabe, quizás acabe cerca de tu ciudad!!

Un saludo y Happy Coding!

Windows Phone 8: Skin Lumia 920

Hola!

Hace un tiempo, Pedro Lamas publicó un skin para el emulador de Windows Phone 7 basado en el Nokia Lumia 920 que podéis encontrar aquí. Basándome en su trabajo, he estado jugando con los skins de Windows Phone 8 y he preparado un skin para los tres emuladores (480, 720 y 768) con la misma apariencia del Lumia 920 amarillo.

Espero que os guste. A continuación tenéis una captura de los tres emuladores, podéis descargar el skin aquí. Para cambiarlo, en la carpeta C:Program Files (x86)Microsoft XDE8.0 tenéis que copiar el contenido de las carpetas 780, 720 y 768 que se encuentran en el zip y ya podréis usar vuestro emulador con un skin igual de bonito que el dispositivo de Nokia.

Un saludo y Happy Coding!

nokia emulator