DNM+ Online
dotnetmania 2.0
¡Mango! Novedades en Windows Phone 7.5
Esta novedosa y refrescante edición del innovador sistema operativo de Microsoft para móviles incluye toda una serie de interesantes características que "endulzarán" nuestro dispositivo, y una gran cantidad de nuevas funcionalidades en cuanto a integración, comunicación, manejo y ergonomía se refiere; además de numerosas mejoras destinadas a potenciar el desarrollo de aplicaciones. Decididamente, Windows Phone 7.5 viene a despertar (o potenciar) nuestra pasión, como si de la misma fruta se tratase… Definitivamente, un buen nombre.

Introducción

Hará ya unos meses, en nuestro reportaje sobre el Mobile World Congress (vea dNM de marzo de 2011), Andy Lees nos indicaba que "estamos construyendo una gran plataforma para desarrollar grandes aplicaciones". En dicha conferencia se anunció la inminente actualización con codename No-Do para la versión original de Windows Phone, y se anunciaron algunas de las novedades que tendrían que llegar "más adelante este año". Dichas novedades finalmente se concretaron en el evento MIX 2011 celebrado en Las Vegas, que se centró en gran medida en este sistema operativo móvil y en la enorme actualización del mismo aún por llegar al público, con nombre en clave Mango.

Figura 1.

En la figura 1 puede observarse un "time line" de la evolución de Windows Phone. Desde su lanzamiento durante el Mobile World Congress de febrero de 2010, que tuvo lugar también en Barcelona, hasta el presente, ha transcurrido un tiempo relativamente corto. Y ya casi tenemos con nosotros la siguiente versión, Mango.

Un punto curioso es que se ha hablado de Mango utilizando dos números de versión diferentes, 7.1 y 7.5, lo que ha generado cierta confusión y discusiones. Las herramientas de desarrollo para Mango tienen oficialmente el número de versión 7.1, pero parece ser que el sistema operativo será comercializado como Windows Phone 7.5 a efectos de marketing. Cuando instalamos la versión beta actual en un dispositivo, ésta se identifica como versión 7.5. Curiosamente, en la documentación técnica se utilizan ambos números de versión, con lo que es evidente la confusión entre versiones. Obviamente, conociendo a Microsoft, "todo está sujeto a cambio". Veremos.

Por otro lado, como anunció en su momento dNM, Mango ya fue liberado a producción (RTM) a finales de julio y su actualización estará disponible este otoño; quizás hasta podáis instalarlo mientras tenéis la revista en vuestras manos y leéis este artículo…

Pero, en pocas palabras, ¿qué nos trae Mango?

Mango integra numerosas mejoras clave que podemos clasificar en:

  • Mejoras sustanciales en el núcleo del sistema y las aplicaciones incorporadas. Se añade el soporte multi-tarea, así como un sistema para ver las aplicaciones activas en segundo plano, que podemos controlar mediante una gestión visual muy ágil, entre otras novedades. También se han incorporado muchas mejoras a prácticamente todas las aplicaciones incorporadas "de serie" al sistema operativo.
  • Mejoras en la capacidad de comunicación. Se ofrecerá una mayor integración con redes sociales en el hub de contactos y los servicios de mensajería, con "perlas" como el acceso a Twitter y LinkedIn… Curiosamente, no se menciona de forma oficial la integración con Skype, aunque tal hecho fue confirmado por Joe Belfiore, la figura responsable de la definición del producto en cuanto a diseño y software, durante MIX 2011 (ver figura 2).
  • Mejoras en las capacidades web y multimedia. Mango soportará HTML5 de la mano de Internet Explorer 9, obviamente acelerado por el hardware del dispositivo, con lo que podemos esperar una mejora sustancial del rendimiento. También hay varias novedades significativas en relación con el tratamiento multimedia.
  • Mejoras para el desarrollo de aplicaciones. En lo relativo al desarrollo, Mango vendrá acompañado de fenomenales mejoras, como que por fin podremos utilizar bases de datos (ver artículo de Octavio Hernández en dNM de julio-agosto de 2011), poner tareas, servicios o agentes en background, soporte para Silverlight 4 e integración de éste con XNA, entre otras muchas.

Seguidamente, vamos a ver con más detalle las novedades y características que ofrecerá esta nueva versión de Windows Phone, "rebanando el mango" en diferentes trozos correspondientes a cada una de las cuatro categorías anteriores y detallando las cualidades e innovaciones relacionadas con cada uno.

Mejoras en el núcleo del sistema y las aplicaciones

Para esta nueva versión, se ha mejorado sustancialmente el core de Windows Phone, dotándolo de soporte para la ansiada multi-tarea, y se ha implementado un sistema de cambio rápido entre aplicaciones. Igualmente, se han mejorado las capacidades de las "Live Tiles" o teselas vivas. De forma resumida, las principales novedades de Mango en cuanto al núcleo y las aplicaciones de base son las siguientes:

  • Multitarea. De una forma sencilla, Mango permitirá que múltiples aplicaciones puedan estar en memoria simultáneamente, y con ello que ciertas aplicaciones continúen ejecutándose cuando no estemos dentro de ellas (una de las restricciones de Windows Phone 7.0). Por ejemplo, ahora podremos dejar una pista de audio en reproducción al dejar de estar activa la aplicación que la lanzó; con lo que se facilitará la implementación de aplicaciones como Spotify (por cierto, ya anunciada oficialmente). Otra característica relacionada con esto es la posibilidad de descargar archivos en segundo plano.
  • Intercambio rápido de aplicaciones (Fast App Switching). Como ya hemos mencionado previamente, una especie de gestor de tareas nos permitirá visualizar las aplicaciones activas y movernos entre ellas, así como finalizarlas. Podemos ver una imagen de cómo luce esta funcionalidad en la figura 2.
  • Live Agents/Services. Mango permitirá a las aplicaciones actualizar sus teselas (tiles), que podremos ver en la pantalla de inicio, así como recibir notificaciones Push de un servidor externo que envíe datos al dispositivo. Los Live Services nos permitirán definir tareas que se ejecutarán en el dispositivo y que podrán reaccionar a eventos como obtener conectividad Wi-Fi, obtener conexión a la red eléctrica, etc., así como también solicitar notificaciones vía solicitudes Pull.
  • Menos limitaciones. Las API del teléfono serán sustancialmente menos limitadas. Gran parte de las limitaciones actuales desaparecerán con Mango, y algunas de las 1.500 nuevas API nos abrirán las puertas a escenarios tales como la realidad aumentada, el escaneado de códigos de barras o el acceso completo a las capacidades de conectividad. Tendremos soporte para sockets, y ello nos garantizará capacidades de mensajería instantánea y chat, así como acceso a los sensores.
  • Mejoras en rendimiento. Mango ofrecerá un rendimiento muy superior, apoyado en avances tales como una mejor capacidad multi-hilo que mejorará la respuesta a las entradas táctiles, o una mejor gestión de la memoria y del recolector de basura, para reducir el uso de la por ahora limitada memoria y eliminar cuellos de botella actuales.
  • Mejoras en ahorro de energía. El dispositivo desactivará automáticamente servicios de consumo de energía y aplicaciones en ejecución en segundo plano cuando la carga de la batería sea baja.
  • Application List. La pantalla de aplicaciones instaladas se verá mejorada mediante una gestión de búsqueda mediante accesos rápidos similar a la búsqueda que se ofrece en People.
  • Otras mejoras. Tendremos una ingente cantidad de mejoras adicionales en las funcionalidades y capacidades de Mango, entre las que es obligatorio destacar las siguientes:

    • Texto predictivo.
    • Soporte para PIN (Personal Identification Number) complejos, que incluyan caracteres alfa-numéricos.
    • Información dinámica para las teselas vivas.
    • Gestión de tonos configurable y con posibilidad de descarga de los mismos.
    • Nuevos idiomas.
    • Reconocimiento de escritura manual asiática.

Figura 2.

Mejoras en la comunicación y redes sociales

Cabe destacar que su integración con redes sociales es uno de los principales puntos fuertes de este sistema operativo, que junto al concepto de hubs, y su usabilidad y eficiencia en general, hacen posibles alcanzar una productividad enorme. Dentro de esta área tenemos las siguientes novedades:

  • Integración de Twitter y LinkedIn con el hub People, ya comentado anteriormente. De esta forma, tendremos unificados todos nuestros contactos en un único hub.
  • Chat de Messenger y Facebook. La funcionalidad de chat fue una de las peticiones más demandadas por los usuarios de la versión original de Windows Phone. Gracias a esta nueva característica (que está también integrada con la mensajería de texto del dispositivo), podremos chatear de una forma nativa y unificada.
  • Integración de mensajes. Todas las comunicaciones de mensajería (Messenger, SMS, MMS) estarán organizadas en un mismo hilo.
  • Mayor integración con Facebook. Además del Facebook Chat, tendremos otra serie de mejoras en la ya buena integración con la red social por excelencia:

    • Facebook Places check-in (sin menciones conocidas a la integración con FourSquare o Gowalla).
    • Facebook Events integrados en el calendario.
  • Mejoras en el correo electrónico. Soporte a conversaciones de correo electrónico enlazadas y a la vinculación de cuentas de correo electrónico. Dispondremos de una bandeja de entrada unificada que nos mostrará una vista "de conversaciones"; es decir, un histórico temporal de todos los e-mails relacionados. Seguiremos teniendo las bandejas de entradas separadas, pero las podremos enlazar entre ellas y verlas de forma unificada; por un lado las personales y por el otro las del trabajo, por ejemplo. También se ofrecerán otras mejoras, como:

    • Anclaje de carpetas de correos electrónicos.
    • Búsqueda de correos electrónicos en el servidor de e-mail (no ubicados en el teléfono).
  • Histórico de conversaciones. Ahora todos los contactos incluirán de forma fácilmente accesible todo el histórico de conversaciones con ellos (Twitter, Messenger, e-mail, SMS, MMS, etc.).

  • Visual Voice Mail.
  • Integración y soporte a las características de seguridad de Outlook, tales como las acciones permitidas en un correo (restricción en reenvío, permisos de visualización, etc.).
  • Revisión de conflictos de calendario. Al recibir una invitación, Mango nos asistirá detectando e indicando conflictos con otros eventos, de haberlos.
  • Control de mensajería mediante comandos de voz. Podremos hacer que Mango lea nuestros mensajes y contestarlos con nuestra propia voz, mediante funcionalidades "text to voice" y "voice to text".
  • Integración de las tareas de Outlook/Exchange. Podremos sincronizar las tareas con el servicio de Exchange.
  • Integración con SkyDrive. Podremos enviar vídeos a SkyDrive, así como enviar por correo electrónico archivos que tengamos en SkyDrive. Supuestamente, esta característica se orienta a fotografías, pero parece obvio que dispondremos de ella para cualquier otro fichero que tengamos en nuestra "personal cloud". También podremos editar documentos de SkyDrive (figura 3).
  • Grupos. Podremos organizar los contactos por grupos, que también podremos anclar en la pantalla de inicio.

Figura 3.

Mejoras en las capacidades web y multimedia

En cuanto a las nuevas capacidades para Internet de Windows Phone Mango, las podemos resumir en una: IE9. Bueno, además de una suma inmensa en cuanto a servicios y características que lo soportan; tantos como para dotarles de una sección aparte. Fundamentalmente, IE9 para Mango será el mismo motor que el que tenemos en nuestros equipos PC, incluyendo características como la aceleración por hardware de la renderización, soporte para HTML5, un nuevo motor de JavaScript, soporte para reproducción de audio y vídeo, y geo-localización. También hay cambios en la interfaz de usuario: la barra de la URL ahora se sitúa en la parte inferior de la pantalla, y también estará visible con el dispositivo en vista horizontal, entre otros detalles. Por lo que respecta a servicios, Bing nos trae muchas novedades:

  • Bing Vision: Lectura de códigos de barra, portadas, posters, escaneado de productos y traducción de textos vía OCR.
  • Bing Audio: Reconocimiento de audio al estilo de la conocida aplicación Shazam.
  • Bing Local Scout: Reconocedor y buscador de elementos que estén cerca, como negocios y puntos de interés.
  • Bing Quick Cards: Información y analíticas de productos y/o media.
  • Bing Search: mapas indoor (solo en Estados Unidos), búsqueda de imágenes e integración con aplicaciones de terceros.
  • Bing Maps: Aplicación de navegación GPS "paso a paso" y con guía por voz.

En lo que respecta al tratamiento multimedia en Windows Phone Mango, las mejoras más notables son: - Cambios en la interfaz visual, con iconos renovados y mejoras en la interfaz y usabilidad. Por ejemplo, el botón para la reproducción aleatoria de música lo tenemos ahora en la barra de aplicación, y los botones de "me gusta", "aleatorio" y "repetir" se han ubicado para visualizarlos de forma más efectiva. - Las configuraciones ahora se graban al cerrar la aplicación de cámara. - Podemos activar y desactivar el sonido del disparador de la cámara. - Soporte para SmartDJ, de Zune. Esta genial aplicación genera listas de reproducción con seleccionar un artista, canción y/o álbum. Básicamente, analiza la música que tenemos en nuestro equipo y selecciona la lista entre ésta. - Visualización de imágenes del artista a modo de salvapantallas mientras se reproduce la música con el dispositivo bloqueado. - Posibilidad de controlar el ratio de aspecto del vídeo durante la reproducción. - Posibilidad de abrir y reproducir media mediante comandos de voz. - Habilidad de crear y almacenar listas de reproducción.

Mejoras para el desarrollo de aplicaciones

Mango nos ofrece unas renovadas herramientas de desarrollo, que continúan siendo 100% gratuitas. Actualmente ya está disponible la versión definitiva del SDK (ver sección Actualidad), que incluye todas las herramientas de diseño y desarrollo necesarias para crear aplicaciones y juegos para Mango.

La figura 4 representa gráficamente las principales tecnologías y API a las que tendremos acceso desde Mango, entre las que cabe destacar las siguientes:

  • Silverlight 4. Aparte del soporte a las capacidades previamente mencionadas, la plataforma de desarrollo de Windows Phone Mango es fundamentalmente equivalente a Silverlight 4, con diversas mejoras adicionales, algunas de las cuales ya se pueden encontrar en Silverlight 5. Una de éstas es la integración con XNA, con lo que podremos combinar Silverlight y XNA en una misma aplicación.
  • SQL Server Compact Edition. Por fin dispondremos de un sistema de gestión de bases de datos relacionales, lo que abre las puertas a infinidad de aplicaciones de negocio, con soporte directo para LINQ to SQL.
  • Nuevo emulador. Emulación mejorada, con simulación de las entradas de los sensores, geo-localización, manejo gráfico del giróscopo, posibilidad de rotar el dispositivo, realizar un "shake" (sacudida) del mismo, etc.
  • Analizadores. Dispondremos de un analizador del rendimiento de una aplicación con características de profiling para detectar, identificar y resolver rápidamente los problemas. También podremos grabar gestos y reproducirlos.
  • Acceso a los sensores. Se ofrecerá una renovada forma de acceder de forma unificada al compás, giróscopo y acelerómetro, denominada "Motion Sensor". En el caso de la cámara, podemos acceder directamente.
  • Mejoras en cuanto a la conectividad. Básicamente, como hemos comentado antes, menores restricciones, así como el soporte para sockets.
  • Mejoras en los controles en general, como Pivot y Panorama. También hay mejoras en el rendimiento del scroll del ListBox. El control WebBrowser se apoyará en el motor de renderizado de IE9, y tendremos decodificación de vídeo acelerada por hardware en el control MediaPlayer.
  • Acceso a los datos de contactos y calendario. Podremos acceder (solo lectura) a los datos de contactos y calendario.
  • Soporte para desarrollar tareas en ejecución desatendida, en segundo plano, así como agentes/servicios.
  • Mejoras en los Live Tiles, que podrán ser actualizados sin conexión a la red y podrán tener dos caras que giren periódicamente. Una aplicación podrá tener a su vez múltiples teselas vivas, que además se podrán enlazar de forma directa a diferentes partes de la aplicación.
  • Más launchers y choosers, principalmente debido a una mayor posibilidad de acceso a los recursos del sistema operativo.
  • Soporte a colores de 32 bits, para aplicaciones con tramado de color por hardware.
  • Acceso programático al Portapapeles.

Figura 4.

Con las manos en la masa

No podíamos cerrar el artículo sin presentar ligeramente el entorno de desarrollo y codificar alguna de las muchísimas nuevas capacidades de Windows Phone Mango. La descarga del SDK de Windows Phone 7.1 puede hacerse desde http://www.microsoft.com/down­load/en/details.aspx?id=27570, aunque es más recomendable ir a la web de desarrolladores, http://create.msdn.com/en-US, donde siempre habrá un enlace a la última versión.

Una vez instaladas las herramientas, crearemos un nuevo proyecto con Visual Studio 2010, y podremos observar algunas novedades en los tipos de proyecto que ofrece el diálogo "New Project", tales como:

  • 3D graphics application. Aplicación base que se integra con XNA, con un ejemplo sencillo en 2D, pese al título.
  • Windows Phone Scheduled Task Agent. Aplicación que nos permitirá crear un agente de los comentados en el punto "Live Agents".
  • Audio Stream Agent. Un agente específico para realizar streaming de audio.
  • Audio Playback Agent. Un agente para reproducir audio cuando la aplicación no esté en ejecución.

Si creamos una aplicación sencilla (por ejemplo, basada en la plantilla "Panorama") y la ejecutamos, veremos el emulador usual que teníamos para Windows Phone 7.0, pero con un icono adicional con una flecha hacia la derecha, que podemos observar en la figura 5. Si pulsamos dicho icono, podremos observar las nuevas posibilidades que ofrece el emulador para modificar la orientación del dispositivo, reproducir movimientos, así como para asignar una ubicación predeterminada al mismo, además de poder dibujar una ruta y reproducirla en el dispositivo. Realmente, una de las mejores novedades para nosotros los desarrolladores.

Figura 5.

Lo que crearemos a continuación será una aplicación que acceda a los dispositivos de Windows Phone (concretamente a la cámara) muestre un video-feed de la cámara en la interfaz de usuario y nos permita realizar fotografías y almacenarlas en la librería de medios, con lo que también veremos cómo se integra con ésta última. El resultado podemos verlo en la figura 6.

Figura 6.

Crearemos un nuevo proyecto del tipo "Windows Phone Application", y le añadiremos a la rejilla principal de MainPage un divisor de filas, para ubicar un botón en la parte superior (btnCamera) y un Rectangle en la parte inferior. Al rectángulo le añadiremos un relleno (Fill) mediante un VideoBrush, un nuevo tipo de brocha añadido en Mango que puede utilizarse para pintar desde un stream de vídeo. En nuestro ejemplo, el stream nos viene de la cámara, pero eso lo implementaremos mediante código. El código XAML resultante puede verse en el listado 1.

<!—LayoutRoot is the root grid where all page content is placed—>
<Grid x:Name="LayoutRoot" Background="Transparent">
  <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="*"/>
  </Grid.RowDefinitions>

  <!—TitlePanel contains the name of the application and page title—>
  <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
      <TextBlock x:Name="ApplicationTitle" 
                 Text="Ejemplo acceso library y devices"
          Style="{StaticResource PhoneTextNormalStyle}"/>
      <TextBlock x:Name="PageTitle" Text="Camara y Lib." Margin="9,-7,0,0" 
          Style="{StaticResource PhoneTextTitle1Style}"/>
  </StackPanel>

  <!—ContentPanel - place additional content here—>
  <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
      <Grid.RowDefinitions>
          <RowDefinition Height="91" />
          <RowDefinition Height="516*" />
      </Grid.RowDefinitions>
      <Button Name="btnCamera"
              Content="Hacer foto" 
              Height="72" 
              HorizontalAlignment="Stretch" 
              Margin="10,10,0,0" 
              VerticalAlignment="Top" Click="btnCamera_Click" />

      <Rectangle 
          Name="CameraResult"
          Width="Auto" Height="Auto" 
                  Grid.Row="1" Grid.RowSpan="1">
          <Rectangle.Fill>
              <VideoBrush x:Name="CameraResultBrush" />
          </Rectangle.Fill>
      </Rectangle>
  </Grid>
</Grid>
Listado 1.

Antes de continuar, validaremos que el manifiesto de la aplicación, WMAppManifest.xaml, ubicado en el directorio Properties, contenga las capacidades IDCAPISVCAMERA e IDCAP_MEDIALIB, como se muestra en el listado 2.

<Capabilities>
  <Capability Name="ID_CAP_ISV_CAMERA"/>
  <Capability Name="ID_CAP_MEDIALIB"/>
  <!-- ... -->
</Capabilities>
Listado 2.

Sin ello, la aplicación lanzaría una excepción al tratar de acceder a la cámara o a la biblioteca de medios, respectivamente.

Seguidamente, añadiremos al evento Click del botón un manejador, cuyo nombre predeterminado será btnCamera_Click. Ya en el code-behind de la página (ver listado 3), añadiremos un campo camara, de tipo PhotoCamera (espacio de nombres Microsoft.Devices). Seguidamente, en el constructor invocaremos a un método ConfigurarCamara, cuya responsabilidad será instanciar la cámara, asignar la fuente del VideoBrush a la cámara, e inicializar los eventos Initialized y CaptureImageAvailable de la cámara. El evento Initialized se disparará una vez que la cámara esté adecuadamente inicializada para capturar vídeo o imágenes, para registrar este hecho. Sin validar esto, podríamos tener una excepción de invocar una captura antes de finalizar la inicialización. Por otra parte, Capture­ImageAvailable se disparará cuando se haya capturado una imagen. Aquí es esencial tener en cuenta que el método no se ejecuta en el hilo de la interfaz de usuario, con lo que deberemos utilizar Dispatcher.BeginInvoke para cualquier acción o método que modifique la interfaz de usuario. En nuestro caso, invocaremos de manera asíncrona a otro método llamado SavePicture, pasándole el stream asociado a la imagen capturada.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
//usings adicionales a añadir
using System.IO;
using System.Windows.Media.Imaging;
using Microsoft.Devices;
using Microsoft.Xna.Framework.Media;

namespace PhoneApp1
{
  public partial class MainPage : PhoneApplicationPage
  {
    PhotoCamera camara;
    Boolean bCameraInitialized = false;

    // Constructor
    public MainPage()
    {
        InitializeComponent();
        ConfigurarCamara();
    }

    void ConfigurarCamara() 
    {
        camara = new PhotoCamera();
        CameraResultBrush.SetSource(camara);
        camara.Initialized += new EventHandler<
                      CameraOperationCompletedEventArgs>(camara_Initialized);
        camara.CaptureImageAvailable += new EventHandler<
                      ContentReadyEventArgs>(camara_CaptureImageAvailable);
    }

    private void btnCamera_Click(object sender, RoutedEventArgs e)
    {
        if (bCameraInitialized) 
        {
            camara.CaptureImage();
        }
    }

    void camara_Initialized(object sender, CameraOperationCompletedEventArgs e)
    {
        camara.Initialized -= new EventHandler<
                      CameraOperationCompletedEventArgs>(camara_Initialized);
        bCameraInitialized = true;
    }

    void camara_CaptureImageAvailable(object sender, ContentReadyEventArgs e)
    {
        Dispatcher.BeginInvoke(delegate()
        {
            SavePicture(e.ImageStream);
        });
    }
    
    void SavePicture(Stream imageStream)
    {
        MediaLibrary library = new MediaLibrary();
        string fileName = string.Format("{0:yyyy-MM-dd-HH-mm-ss}.jpg",        
                                        DateTime.Now);
        library.SavePicture(fileName, imageStream);
    }
  }
}
Listado 3.

SavePicture instanciará MediaLibrary, que nos permite tener acceso a nuestra biblioteca de medios del dispositivo, y ordenará a ésta que guarde la imagen en un fichero, cuyo nombre generaremos dinámicamente a partir de la fecha y hora actuales.

Para finalizar, en btnCamera_Click simplemente lanzaremos la captura de una imagen invocando al método CaptureImage, de la cámara, validando previamente que ésta esté inicializada. Este método provocará a fin de cuentas el disparo del evento CaptureImageAvailable antes descrito una vez que la imagen haya sido capturada.

El código del ejemplo puede ser descargado desde el sitio web dNM+, así como desde mi propio blog.

Conclusiones

Mango es grande, mucho… Tenemos para rato, aunque lo más importante es conocer qué podemos verdaderamente lograr con él, y ello creo que lo hemos visto de una forma bastante completa en este artículo. Recomiendo al lector probar el ejemplo de acceso a la cámara y librería de medios tan pronto disponga de Windows Phone "Mango", para ir "haciendo boca". Pienso que, verdaderamente, tenemos un contendiente muy serio en el mercado, con el que podremos desarrollar aplicaciones muy serias y competitivas.

blog comments powered by Disqus