Windows Phone 7.5: Nuevos launchers & choosers

Hola a todos!

Seguimos dando un repaso a las novedades definitivas que vamos a encontrar en Windows Phone 7.5 (Mango). En esta ocasión vamos a echar un vistazo a los nuevos launchers & choosers que nos ofrece la nueva versión de Windows Phone!

BingMapsDirectionTask

Este lanzador abre la aplicación de Bing Maps instalada en nuestro dispositivo y muestra una ruta entre dos puntos que le hayamos indicado.

Si solo indicamos uno de los puntos (el de inicio o el de destino) Bing Maps usará nuestra posición actual como el punto contrario y trazará la ruta correspondiente. Para especificar los puntos usaremos objetos LabeledMapLocation, los cuales nos permiten especificar una etiqueta para el punto y las coordenadas geográficas del punto.

Lo primero que necesitamos hacer es añadir una referencia al ensamblado System.Device en nuestro proyecto y un using del namespace System.Device.Location y Microsoft.Phone.Tasks en nuestra clase.

Ahora solo necesitamos crear los objetos LabeledMapLocation para el punto inicial y final de la ruta:

LabeledMapLocation puntoInicial;
LabeledMapLocation puntoFinal;

puntoInicial = new LabeledMapLocation()
{
    Label = "Inicio",
    Location = new GeoCoordinate(43.26132332170895, 
                                    -2.927180528640747)
};
puntoFinal = new LabeledMapLocation()
{
    Label = "Final",
    Location = new GeoCoordinate(43.26890938831908, 
                                    -2.934046983718872)
};

En este caso hemos creado una ruta que nos lleva desde la estación de tren de Bilbao al museo Guggenheim, si hubiésemos omitido el punto inicial la ruta se habría calculado desde nuestra posición hasta el museo Guggenheim.

A continuación, creamos una nueva instancia del lanzador BingMapsDirectionsTask, establecemos los puntos de inicio y fin:

BingMapsDirectionsTask mapRoute = new BingMapsDirectionsTask();
mapRoute.Start = puntoInicial;
mapRoute.End = puntoFinal;
mapRoute.Show();

BingMapsTask

Nos permite lanzar la aplicación de Bing Maps, establecer el nivel de Zoom, un término de búsqueda por defecto y unas coordenadas en las que centrar el mapa.

Al igual que en BingMapsDirectionsTask, necesitaremos añadir una referencia al ensamblado System.Device y un using al namespace System.Device.Location y Microsoft.Phone.Tasks en nuestra clase.

BingMapsTask map = new BingMapsTask();

map.Center = new GeoCoordinate(43.26303437089185,
                                -2.9349589347839355);

map.ZoomLevel = sliderZoom.Value;
map.SearchTerm = "Museo Guggenheim, Bilbao";

map.Show();

SearchTask

Lanza la aplicación de búsqueda con el término de búsqueda que hayamos indicado:

SearchTask search = new SearchTask();

search.SearchQuery = "Plain Concepts";
search.Show();

ShareLinkTask

Nos permite compartir un enlace (url), con un mensaje y título asociados en las redes sociales que soporta Windows Phone 7.5:

ShareLinkTask shareLink = new ShareLinkTask();

shareLink.Title = "Blog";
shareLink.LinkUri = new Uri("http://www.geeks.ms/blogs/jyeray);
shareLink.Message = "Un buen blog, con muchos recursos de wp7";
shareLink.Show();

Al ejecutarlo, aparecerá un cuadro de selección donde podremos elegir donde queremos compartir el enlace, en Twitter, LinkedIn, Facebook, por correo electrónico o mensaje de texto.

ShareStatusTask

Parecido a ShareLinkTask, este lanzador nos permite actualizar nuestro estado en las diferentes redes sociales que soporta Windows Phone 7.5:

ShareStatusTask shareStatus = new ShareStatusTask();
shareStatus.Status = "Actualizando mi estado!!";
shareStatus.Show();

 

SaveContactTask

Este selector mostrará un diálogo al usuario que nos permitirá guardar un nuevo contacto con los datos que indiquemos. Este selector no devuelve ningún dato, pero podemos manejar el evento Completed para comprobar si se ha guardado correctamente o no el contacto.

Vamos a diseñar una página que nos permita introducir nombre, empresa, teléfono y correo electrónico de un nuevo contacto (SaveContactTask admite todos los campos disponibles en un contacto de Windows Phone, escogemos estos de forma representativa) y que contenga un botón que ejecute el selector:

private void btnCrear_Click(object sender, RoutedEventArgs e)
{
    SaveContactTask saveTask = new SaveContactTask();

    saveTask.Completed += new EventHandler<SaveContactResult>(saveTask_Completed);
    saveTask.FirstName = txtNombre.Text;
    saveTask.Company = txtEmpresa.Text;
    saveTask.WorkPhone = txtTelefono.Text;
    saveTask.WorkEmail = txtEmail.Text;

    saveTask.Show();
}

Una vez que haya terminado el selector recibiremos el evento Completed, donde podremos comprobar si se ha guardado correctamente:

void saveTask_Completed(object sender, SaveContactResult e)
{
    if (e.TaskResult == TaskResult.OK)
        MessageBox.Show("Contacto guardado.");
}

SaveRingtoneTask

Este selector representa una de las novedades más esperadas en Windows Phone 7.5, poder incluir tonos personalizados en el teléfono. Con este selector podremos crear nuestra propia aplicación que instale tonos nuevos en el teléfono.

Antes de comenzar, debemos tener en cuenta ciertas restricciones en el tipo de archivo de audio a usar:

  • Los archivos deben ser MP3 o WMA.
  • Deben tener una duración inferior a 40 segundos.
  • No pueden tener DRM.
  • Deben tener un tamaño menor a 1Mb

Como en otros selectores, el evento Completed nos devolverá el resultado de la operación, pero además el método Show puede producir y devolver excepciones, como por ejemplo InvalidOperationException si el archivo de sonido indicado no existe.

A la hora de indicar la localización del archivo a usar como tono de llamada, podremos aprovecharnos de los nuevos esquemas Uri que incluye Windows Phone 7.5, de esta forma, podremos usar isostore:/nombre_tono.mp3 para acceder a un tono que se encuentre en el almacenamiento aislado de nuestra aplicación y appdata:/nombre_tono.mp3 para acceder a un tono que se encuentre incrustado en nuestra aplicación como contenido.

En primer lugar, añadimos un using de Microsoft.Phone.Tasks y creamos una nueva instancia de SaveRingtoneTask con la que trabajar.

En la interface de usuario tendremos un textBox con el que podremos personalizar el nombre que recibirá el tono en el sistema y un botón que ejecutará este chooser:

private void btnSetTone_Click(object sender, RoutedEventArgs e)
{
    SaveRingtoneTask saveTone = new SaveRingtoneTask();
    saveTone.Completed += 
        new EventHandler<TaskEventArgs>(saveTone_Completed);
    saveTone.DisplayName = txtDisplayName.Text;
    saveTone.IsShareable = true;
    saveTone.Source = new Uri("appdata:/tone.mp3");
    saveTone.Show();
}

En este caso estamos usando el esquema uri appdata:/ que indica que el archivo está almacenado en el directorio de instalación de nuestra aplicación. Una propiedad interesante de este selector es IsShareable, que indica si deseamos permitir que otras aplicaciones accedan a este tono. Una vez que ejecutemos la aplicación, y presionemos el botón, el sistema nos pedirá que confirmemos la instalación del tono.

En el evento Completed recibiremos el resultado de la operación:

void saveTone_Completed(object sender, TaskEventArgs e)
{
    if (e.TaskResult == TaskResult.OK)
        MessageBox.Show("Tono instalado ok");
    else if (e.TaskResult == TaskResult.Cancel)
        MessageBox.Show("Cancelado por el usuario.");
}

Lamentablemente solo lo podremos usar con archivos de audio dentro de nuestro isolated storage o copiados junto a nuestra aplicación, no podremos acceder a la librería multimedia de Zune en el teléfono.

Y esto ha sido todo por hoy, un saludo, gracias por leerme y Happy Coding!!

2 comentarios sobre “Windows Phone 7.5: Nuevos launchers & choosers”

Responder a jbosch Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *