Home > MVA, Tutoriales, WP7 > Lanzadores y Selectores

Lanzadores y Selectores

Lanzadores y Selectores

Este artículo es una traducción del artículo original encontrado en: http://create.msdn.com/en-US/education/quickstarts/Lanzadores_and_Selectores.

 

Las aplicaciones de Silverlight para Windows Phone no tienen acceso directo a las aplicaciones incorporadas en el dispositivo, tales como marcador de teléfono, o los datos de la biblioteca del usuario, como la biblioteca de fotos. Esto se debe a que todas las aplicaciones Windows Phone están aisladas unas de otras en entornos limitados (sandboxes).  Una aplicación no puede iniciar otra aplicación, acceder a la memoria de otra aplicación, o acceder al almacenamiento de datos de otra aplicación.  Los Lanzadores y Selectores permiten a las aplicaciones de Silverlight para Windows Phone  utilizar indirectamente las aplicaciones incorporadas en el dispositivo y acceder a bibliotecas de datos comunes.  Este tutorial describe qué pueden hacer los Lanzadores y Selectores y cómo utilizarlos en tus aplicaciones.

 

Este artículo contiene las siguientes secciones:

·         Introducción a los Lanzadores y Selectores

·         Usando Lanzadores

·         Usando Selectores

 

Introducción a Lanzadores y Selectores

Los Lanzadores y Selectores permiten a las aplicaciones de Silverlight para Windows Phone acceder a las aplicaciones integradas y almacenes de datos en el dispositivo Windows Phone.  Por ejemplo, si deseas que la aplicación realice una llamada de teléfono, deberás utilizar el Lanzador PhoneCallTask ​​para iniciar la aplicación de marcador telefónico. Para acceder a las bibliotecas de datos en el dispositivo, como la biblioteca de fotos, debes utilizar el Selector PhotoChooserTask.

 

La diferencia entre los Lanzadores y Selectores, es que Lanzadores no devuelve un valor cuando finalice la aplicación iniciada, y los Selectores retornan un valor.  Por ejemplo, el Lanzador EmailComposeTask  inicia la aplicación de correo electrónico y al salir, el control se devuelve a la aplicación que llama el Lanzador. El Selector CameraCaptureTask, por el contrario, inicia la aplicación de la cámara, pero después que el usuario toma una fotografía, la aplicación de la cámara es cerrada y devuelve el valor de la foto que fue tomada.

 

Cuando llamas a un Lanzador o Selector, tu aplicación de Silverlight para Windows Phone se desactiva y la aplicación lanzada comienza.  Cuando se cierra la aplicación lanzada, tu aplicación se vuelve a activar.  Este proceso se llama tombstoning y puede tener ligeros efectos sobre el estado de tu aplicación.  Para obtener información sobre cómo manejar adecuadamente tombstoning en tu aplicación de Silverlight para Windows Phone, consulta la sección Modelo de Ejecución para Windows Phone  en MSDN y Ejecutando una Aplicación en Segundo Plano (Tombstoning).

 

Las clases de Lanzadores y Selectores están en el espacio de nombres Microsoft.Phone.Tasks, por lo que tendrás que incluir una directiva using en tu aplicación.

 

Usando Lanzadores

El proceso para utilizar todas las clases de Lanzadores es la misma.  Para utilizar un Lanzador, usa los pasos siguientes:

 

·         Crea una instancia de la clase Lanzador.

·         Establece las propiedades en el objeto Lanzador.

·         Llama al método Show.

 

Por ejemplo, para utilizar el Lanzador de correo electrónico para componer un nuevo correo electrónico, debes crear una instancia de EmailComposeTask, establecer las propiedades To, Body y Subject, y luego llamar al método Show para iniciar la aplicación. Cuando se cierra la aplicación de correo electrónico, el control se devuelve a tu aplicación.

La siguiente tabla enlista los diferentes Lanzadores disponibles:

Lanzador

Descripción

EmailComposeTask  

Permite a una aplicación lanzar la aplicación de correo electrónico desplegando un nuevo mensaje.  Utiliza esta opción para permitir a los usuarios enviar correo electrónico desde tu aplicación.

MarketplaceDetailTask

Permite a una aplicación lanzar la aplicación cliente del Windows Phone Marketplace y mostrar la página de detalles del producto especificado.

MarketplaceHubTask

Permite que una aplicación lance la aplicación cliente del Windows Phone Marketplace.

MarketplaceSearchTask

Permite que una aplicación lance la aplicación cliente del Windows Phone Marketplace y muestre los resultados de los términos de búsqueda especificados.  

MediaPlayerLauncher

Permite que una aplicación lance el reproductor de medios.

PhoneCallTask

Permite a una aplicación lanzar la aplicación de Teléfono.  Utiliza esta opción para permitir a los usuarios hacer una llamada telefónica desde tu aplicación.

SearchTask

Permite a una aplicación lanzar la aplicación de búsqueda en la web.

SmsComposeTask

Permite a una aplicación lanzar la aplicación de Mensajería.  La aplicación de mensajería se inicia con un nuevo mensaje SMS.

WebBrowserTask

Permite a una aplicación lanzar la aplicación del navegador web.

 

El siguiente ejemplo muestra cómo utilizar el Lanzador PhoneCallTask para abrir el marcador de teléfono en el dispositivo.  Primero, una interfaz de usuario básica es creada, la cual tiene un Button para llamar al Lanzador.

XAML

<Button Name="ButtonDialer"

Content="Place Call"

Height="100" Width="200"

Click="ButtonDialer_Click" />

 

La imagen siguiente muestra un ejemplo de la aplicación ejecutándose en el emulador de Windows Phone.

clip_image002

 

A continuación, un objeto PhoneCallTask es instanciado y se establecen las propiedades  PhoneNumber   y DisplayName.  Por último, el método Show es llamado para iniciar la aplicación.

C#

private void ButtonDialer_Click(object sender, RoutedEventArgs e)

{

// El lanzador

PhoneCallTask phoneCallTask = new PhoneCallTask();

// Información de contacto para pasar a la aplicación de marcador telefónico.    

phoneCallTask.PhoneNumber = "(555)-555-5555";

phoneCallTask.DisplayName = "Fred";

// Inicia la aplicación de marcador de teléfono.

phoneCallTask.Show();

}

Después que el método Show es llamado, se pide al usuario elegir en hacer o no la llamada.  La siguiente imagen muestra un ejemplo de la aplicación ejecutando en el emulador de Windows Phone.

clip_image004

Si el usuario elige realizar la llamada, la aplicación de teléfono es lanzada y el número de teléfono es marcado.  Las siguientes imágenes muestran la aplicación de ejemplo ejecutando en el emulador de Windows Phone.

clip_image006

El siguiente ejemplo muestra cómo utilizar el Lanzador SearchTask para buscar en Internet desde tu aplicación.

Primero, una interfaz de usuario básica es creada, la cual tiene un Button para llamar al Lanzador.

XAML

<Button Name="ButtonSearch"

Height="100" Width="250"

Content="Search"

Click="ButtonSearch_Click" />

 

La imagen siguiente muestra un ejemplo de la aplicación que se ejecuta en el emulador de Windows Phone.

clip_image008

Después, se crea una instancia de SearchTask y se establece la propiedad SearchQuery a "Silverlight Windows Phone".  Por último, el método Show es llamado para iniciar la aplicación.

 

C#

private void ButtonSearch_Click(object sender, RoutedEventArgs e)

{

// El lanzador

searchTask searchTask = new SearchTask();

// Establece la consulta de búsqueda

searchTask.SearchQuery = "Silverlight Windows Phone";

// Inicia la aplicación de búsqueda de teléfono.

searchTask.Show();

}

 

Después  de que método Show es llamado, se solicita al usuario un cuadro de diálogo de privacidad preguntando si desea permitir que la búsqueda proceda.  La siguiente imagen muestra la página de privacidad de la búsqueda.

 

clip_image010

 

Si el usuario acepta las condiciones, la búsqueda es ejecutada y los resultados de búsqueda aparecen.  La siguiente imagen muestra un ejemplo de la aplicación que se ejecuta en el  emulador de Windows Phone.

clip_image012

 

Usando Selectores


El uso de Selectores es muy similar al uso Lanzadores.  La principal diferencia es que los Selectores retornan valores a través del evento Completed.  Para usar un Selector, usa los siguientes pasos:

·         Crea una instancia de la clase del Selector.

·         Agrega un manejador para el evento Completed

·         Establece las propiedades en el objeto del Selector

·         Llama al método Show

·         Recupera el valor de retorno de la aplicación del Selector en el manejador del evento Completed.

Por ejemplo, para utilizar el Selector de Fotos, debes crear una instancia de la clase PhotoChooserTask, agregar un manejador para el evento Completed, llamar al método Show, y luego en el manejador Completed,  si el TaskResult es OK, recupera el stream de la imagen de la propiedad ChosenPhoto de los argumentos del evento.

La siguiente tabla enlista los diferentes Selectores que están disponibles:

Selector

Descripción

CameraCaptureTask

Permite a una aplicación  iniciar la aplicación Cámara. Utiliza esta opción para permitir a los usuarios para tomar una foto desde tu aplicación.

EmailAddressChooserTask

Permite a una aplicación iniciar la aplicación de Contactos. Utilízalo para obtener la dirección de correo electrónico de un contacto seleccionado por el usuario.

PhoneNumberChooserTask

Permite a una aplicación para iniciar la aplicación de Contactos. Utilízalo para obtener el número de teléfono de un contacto seleccionado por el usuario.

PhotoChooserTask

Permite a una aplicación lanzar la aplicación de selección de fotos.  Utilízalo para permitir a los usuarios seleccionar una foto.

SaveEmailAddressTask

Permite a una aplicación iniciar la aplicación de Contactos. Utiliza esta opción para permitir a los usuarios guardar una dirección de correo electrónico desde tu aplicación a un contacto nuevo o existente.

 

SavePhoneNumberTask

Permite a una aplicación iniciar la aplicación de Contactos. Utiliza esta opción para permitir a los usuarios guardar un número de teléfono desde tu aplicación a un contacto nuevo o existente.

 

El siguiente ejemplo muestra cómo utilizar el Selector PhoneNumberChooserTask para elegir un número de teléfono de uno de los contactos en el dispositivo.  Primero se crea una interfaz de usuario, la cual tiene un Button para llamar al Selector  y un TextBlock para mostrar el resultado.

 

XAML

<!–ContentPanel – coloque el contenido adicional aquí–>

<StackPanel>

<Button Name="ButtonChooser"

Height="150" Width="275"

Content="Get Phone Number"

Click="ButtonChooser_Click"/>

<TextBlock Name="txtPhoneNumber"

Margin="10"

FontSize="28"

Text="Phone Number: " />

</StackPanel>

 

La siguiente imagen muestra un ejemplo de  la aplicación que se ejecuta en el emulador de Windows Phone.

clip_image014

A continuación, se define una instancia global de PhoneNumberChooserTask.  En el constructor público de la clase, el PhoneNumberChooserTask  es instanciado.  Un manejador de eventos denominado numberChooser_Completed es creado para  manejar el evento Completed.  Por último, el método Show es llamado al iniciar la aplicación.

 

En el manejador del evento Completed, la propiedad TaskResult en PhoneNumberResult es verificada.  Si TaskResult es OK, la propiedad Text en el TextBlock se establece con el valor de la propiedad PhoneNumber en el objeto PhoneNumberResult.

 

C#

public partial class MainPage : PhoneApplicationPage

{

PhoneNumberChooserTask numberChooser;

// Constructor

public MainPage()

{

InitializeComponent();

numberChooser = new PhoneNumberChooserTask();

numberChooser.Completed +=

new EventHandler<PhoneNumberResult>(numberChooser_Completed);

}

void numberChooser_Completed(object sender, PhoneNumberResult e)

{

// Compruebe si TaskResult es un éxito

if (e.TaskResult == TaskResult.OK)

{

// Mostrar el número de teléfono en el TextBlock  txtPhoneNumber

txtPhoneNumber.Text += e.PhoneNumber;

}

}

private void ButtonChooser_Click(object sender, RoutedEventArgs e)

{

try

{

// Inicia el Selector.

numberChooser.Show();

}

catch (System.InvalidOperationException ex)

{

// Captura la excepción, pero no es necesario el manejo.

}

}

}

 

La siguiente imagen muestra el Selector PhoneNumber ejecutando en el emulador de Windows Phone.

clip_image016

 

Después de que el usuario selecciona el contacto para obtener el número de teléfono, el número se visualiza.  La siguiente imagen muestra la aplicación después de que un contacto es seleccionado.

clip_image018

  1. Juan Carlos Cardona
    November 21st, 2012 at 07:56 | #1

    Muy interesante

  2. Guillermo
    July 25th, 2013 at 08:26 | #2

    Muy buen articulo :) y util.

  3. February 27th, 2014 at 13:22 | #3

    Hola, muy bueno tu blog para iniciarse en el desarrollo de Windows Phone, pero tengo una consulta la cual no he pillado en ninguna parte, es posible detectar si el telefono es conectado al toma corrientes? dado que si sudede esto quiero lanzar una aplicación.

    Es posible? dado que creo que deben haber diferencias entre la carga de USB y la carga de la toma electrica.

    Un abrazo,
    Cristian Cárdenas.