Windows Phone 8. Nuevos Lanzadores.

WP8IconIntroducción

En ocasiones nuestras aplicaciones necesitarán cierto grado de interacción con el sistema. Por ejemplo, realizar acciones como abrir Bing Maps para indicar una localización, abrir el MarketPlace para que el usuario puntue la aplicación o abrir el reproductor multimedia para reproducir un archivo.

¿Podemos realizar este tipo de acciones?

Por supuesto. Para ello tenemos a nuestra disposición los lanzadores. Un lanzador nos permite ejecutar una determianda acción en el sistema. Importante resaltar que cuando el lanzador se ejecuta, nuestra aplicación se cierra. Además, no vamos a recibir ningun tipo de información por parte del lanzador. Por ejemplo, al abrir el MarketPlace para puntuar la aplicación, el usuario puede votar  o no nuestra aplicación pero el lanzador no nos indicará que ha sucedido.

Nuevos Lanzadores

Con el nuevo SDK de Windows Phone 8 contamos a nuestra disposición con un nuevo conjunto de lanzadores distintos. Son los siguientes:

  • MapsTask. Inicia la aplicación de Mapas. Se puede indicar un parámetro para buscar una localización en el mapa, especificar un punto central (si no se especifica se utilizaría la posición actual como punto central) o el nivle de zoom.
  • MapsDirectionsTask. Inicia la aplicación de Mapas permitiendo indicar una ruta entre dos puntos dados.
  • MapDownloaderTask. Abre la configuración de la aplicación de Mapas permitiendo al usuario descargar mapas para su uso sin conexión.
  • SaveAppointmentTask. Inicia la aplicación Calendario del sistema y permite al usuario añadir una nueva cita.
  • ShareMediaTask. Permite al usuario compartir un archivo multimedia.

Como podemos ver tenemos nuevas opciones muy interesantes. Para aprender a utilizar cada uno de los nuevos lanzadores como siempre, crearemos un ejemplo práctico.

Windows Phone Application

La plantilla seleccionada será “Windows Phone Application” para simplificar al máximo el ejemplo.

Agregamos dentro del Grid principal de la página MainPage.xaml:

<StackPanel>
     <Button x:Name="btnMapsTask" Content="MapsTask"/>
     <Button x:Name="btnMapsDirectionsTask" Content="MapsDirectionsTask"/>
     <Button x:Name="btnMapDownloaderTask" Content="MapDownloaderTask"/>
     <Button x:Name="btnSaveAppointmentTask" Content="SaveAppointmentTask"/>
     <Button x:Name="btnShareMediaTask" Content="ShareMediaTask"/>
</StackPanel>

Conseguiremos la siguiente interfaz:

Página Principal

Página Principal

Añadimos el manejador del evento Click de cada botón:

<StackPanel>
     <Button x:Name="btnMapsTask" Content="MapsTask" Click="btnMapsTask_Click_1"/>
     <Button x:Name="btnMapsDirectionsTask" Content="MapsDirectionsTask" Click="btnMapsDirectionsTask_Click_1"/>
     <Button x:Name="btnMapDownloaderTask" Content="MapDownloaderTask" Click="btnMapDownloaderTask_Click_1"/>
     <Button x:Name="btnSaveAppointmentTask" Content="SaveAppointmentTask" Click="btnSaveAppointmentTask_Click_1"/>
     <Button x:Name="btnShareMediaTask" Content="ShareMediaTask" Click="btnShareMediaTask_Click_1"/>
</StackPanel>

Y en el code-behind:

private void btnMapsTask_Click_1(object sender, RoutedEventArgs e)
{
}

private void btnMapsDirectionsTask_Click_1(object sender, RoutedEventArgs e)
{
}

private void btnMapDownloaderTask_Click_1(object sender, RoutedEventArgs e)
{
}

private void btnSaveAppointmentTask_Click_1(object sender, RoutedEventArgs e)
{
}

private void btnShareMediaTask_Click_1(object sender, RoutedEventArgs e)
{
}

Comenzamos con el lanzador MapsTask. Veamos el código de ejemplo utilizado al pulsar sobre el primer botón:

MapsTask mapsTask = new MapsTask();
mapsTask.Center = new GeoCoordinate(37.387908, 6.001959);
mapsTask.ZoomLevel = 8; // 1- 20
mapsTask.SearchTerm = "restaurante";

mapsTask.Show();

Contamos con las siguientes propiedades:

  • Center. Localización a utilizar como centro del mapa (GeoCoordinate).
  • ZoomLevel. Nivel de zoom (Double).
  • SearchTerm. Término utilizado para buscar y localizar localizaciones.

NOTA: Debemos añadir la referencia a la librería System.Device. Una vez añadida la librería se deben añadir las siguientes using:

using System.Device.Location
using Microsoft.Phone.Tasks

Visualmente veremos algo como lo siguiente:

Lanzadores WP8 02

MapsTask

Continuamos con el lanzador  MapDirectionsTask. Este lanzador abre la aplicación de mapas de Nokia. Podemos especificar dos puntos para obtener la ruta entre ambos.

MapsDirectionsTask mapDirectionsTask = new MapsDirectionsTask();
mapDirectionsTask.Start = new LabeledMapLocation("Sevilla", new GeoCoordinate(37.387908, 6.001959));
mapDirectionsTask.End = new LabeledMapLocation("Madrid", new GeoCoordinate(40.420299, 3.705770));

mapDirectionsTask.Show();

Las propiedades a utilizar son:

  • Start. Localización inicial (LabeledMapLocation).
  • End. Localización final (LabeledMapLocation).
Lanzadores WP8 03

MapsDirectionsTask

El siguiente lanzador (MapDownloaderTask) nos permite descargas mapas de Nokia para trabajar con ellos offline. Su uso es sumamente sencillo:

MapDownloaderTask mapDownloaderTask = new MapDownloaderTask();

mapDownloaderTask.Show();

El resultado:

Lanzadores WP8 04

MapDownloaderTask

Continuamos con el lanzador SaveAppointmentTask que nos permite abrir la aplicación de calendario del sistema con el formulario de creación de cita abierto:

SaveAppointmentTask saveAppointmentTask = new SaveAppointmentTask();
saveAppointmentTask.StartTime = DateTime.Now.AddHours(1);
saveAppointmentTask.EndTime = DateTime.Now.AddHours(2);
saveAppointmentTask.Subject = "Artículo WP8";
saveAppointmentTask.Details = "Escribir artículo Lanzadores en Windows Phone 8";
saveAppointmentTask.Reminder = Reminder.FiveMinutes;

saveAppointmentTask.Show();

Las propiedades posibles a utilizar son:

  • StartTime. Fecha y hora de comienzo de la cita (DateTime).
  • EndTime. Fecha y hora final de la cita (DateTime).
  • Subject. Asunto de la cita.
  • Details. Detalles de la cita.
  • Reminder. Junto a la cita podemos añadir un recordatorio de la misma (Reminder).
  • Location. Localización de la cita (String).
  • AppointmentStatus. Enumeración de tipo AppointmentStatus que utilizamos para indicar el estado de la cita que afecta a como se tratará el bloque de la cita posteriormente.
  • IsAllDayEvent. Propiedad de tipo bool que utilizamos para indicar si la cita ocupa todo el día o no.
Lanzadores WP8 05

SaveAppointmentTask

Y para finalizar, nos centramos en ShareMediaTask que permite compartir un contenido multimedia en redes sociales:

private void btnShareMediaTask_Click_1(object sender, RoutedEventArgs e)
{
     PhotoChooserTask photoChooserTask = new PhotoChooserTask();
     photoChooserTask.ShowCamera = true;
     photoChooserTask.PixelHeight = 300;
     photoChooserTask.PixelWidth = 300;
     photoChooserTask.Completed += photoChooserTask_Completed;

     photoChooserTask.Show();
}

void photoChooserTask_Completed(object sender, PhotoResult e)
{
     ShareMediaTask shareMediaTask = new ShareMediaTask();
     shareMediaTask.FilePath = e.OriginalFileName;

     shareMediaTask.Show();
}

La propiedad a utilizar es FilePath. Espera la ruta al archivo multimedia a compartir:

Lanzadores WP8 06

ShareMediaTask

Puedes descargar el ejemplo realizado a continuación:

En futuras entradas algunos de estos lanzadores los utilizaremos viendolos con más detalle. Si os surgen dudas o sugerencias podéis dejarlas en los comentarios de la entrada.

Más información

5 pensamientos en “Windows Phone 8. Nuevos Lanzadores.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s