modulo3 launchers&choosers

9

Click here to load reader

Upload: eduardo

Post on 22-Jun-2015

244 views

Category:

Documents


2 download

DESCRIPTION

Launchers y Choosers de Windows Phone “Mango”

TRANSCRIPT

Page 1: Modulo3 Launchers&Choosers

11/07/2011

1

¿Qué son los Launchers &

Choosers?

Modelo de aplicación de Windows Phone aisla cada

aplicación en su sandbox

APIs que dan acceso directo a características muy útiles

del teléfono (Cámara, Bing Maps, llamadas…)

Invocan distintas aplicaciones nativas que sustituyen la

app actual

Puede verse…

Un Launcher como una acción tipo «lanzar y olvidar»

Un Chooser como una acción «diálogo de abrir fichero»

Launchers

APIs mediante las que el usuario completa una tarea

No devuelven datos

Pertenecen al nombre de espacio Microsoft.Phone.Task

Cómo utilizarlos:

Crear instancia del Launcher deseado

Establecer propiedades del objeto launcher

Invocar Launcher (médoto Show())

Llaman a aplicaciones nativas EmailComposeTask

llama a la aplicación de mensajería

La aplicación que llama un launcher es desactivada y

reactivada

Launchers en Mango

BingMapsDirectionsTask* BingMapsTask*

EmailComposeTask MarketplaceDetailTask

MarketplaceHubTask MarketplaceReviewTask

MarketplaceSearchTask MediaPlayerLauncher

PhoneCallTask SearchTask

SmsComposeTask ShareLinkTask*

ShareStateTask* WebBrowserTask

*Launchers nuevos con respecto a

Windows Phone 7.0

Page 2: Modulo3 Launchers&Choosers

11/07/2011

2

BingMapsDirectionsTask

BingMapsDirectionsTask bingMapsDirectionsTask = new BingMapsDirectionsTask(); GeoCoordinate spaceNeedleLocation = new GeoCoordinate(47.6204,-122.3493); LabeledMapLocation spaceNeedleLML = new LabeledMapLocation("Space Needle", spaceNeedleLocation); bingMapsDirectionsTask.End = spaceNeedleLML; // bingMapsDirectionsTask.Start no está. La localización actual del usuario es usada como punto de inicio bingMapsDirectionsTask.Show();

Lanza la aplicación Bing Maps

Muestra direcciones entre dos puntos (LabeledMapLocation)

Si no se especifica el origen o destino se toma posición actual

BingMapsTask

Lanza la aplicación Bing Maps

Permite configurar el punto central

del mapa (Geocordinate)

Admite cadena de búsqueda para

marcar direcciones

BingMapsTask bingMapsTask = new BingMapsTask(); // Omit the Center property to use the user's current location. // bingMapsTask.Center = new GeoCoordinate(47.6204, -122.3493); bingMapsTask.SearchTerm = "coffee"; bingMapsTask.ZoomLevel = 2;

EmailComposeTask

Lanza la aplicación Email

Muestra nuevo mail

Configurar asunto, receptores, cuerpo mensaje

EmailComposeTask emailComposeTask = new EmailComposeTask(); emailComposeTask.Subject = "message subject"; emailComposeTask.Body = "message body"; emailComposeTask.To = "[email protected]"; emailComposeTask.Cc = "[email protected]"; emailComposeTask.Bcc = "[email protected]"; emailComposeTask.Show();

MarketplaceDetailTask

Lanza la aplicación cliente de Marketplace Windows

Phone

Muestra detalles del producto especificado

// Muestra una aplicación utilizando el ContenType por defecto MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask(); marketplaceDetailTask.ContentIdentifier = "<ID>"; marketplaceDetailTask.ContentType = MarketplaceContentType.Applications; marketplaceDetailTask.Show();

Page 3: Modulo3 Launchers&Choosers

11/07/2011

3

MarketplaceHubTask

Lanza la aplicación cliente de Marketplace Windows

Phone

Propiedad ContentType establece tipo de contenido

buscado

MarketplaceHubTask marketplaceHubTask = new MarketplaceHubTask(); marketplaceHubTask.ContentType = MarketplaceContentType.Music; marketplaceHubTask.Show();

MarketplaceReviewTask

Lanza la aplicación cliente de Marketplace Windows

Phone

Muestra revisiones de la aplicación actual

MarketplaceReviewTask marketplaceReviewTask = new MarketplaceReviewTask(); marketplaceReviewTask.Show();

MarketplaceSearchTask

Lanza la aplicación cliente de Marketplace Windows Phone

Muestra resultados de búsqueda según los parámetros de

búsqueda proporcionados

//Búsqueda de una aplicación, utilizando ContentType por defecto. MarketplaceSearchTask marketplaceSearchTask = new MarketplaceSearchTask(); marketplaceSearchTask.SearchTerms = "accelerometer xna"; marketplaceSearchTask.Show();

// Búsqueda de una canción. MarketplaceSearchTask marketplaceSearchTask = new MarketplaceSearchTask(); marketplaceSearchTask.ContentType = MarketplaceContentType.Music; marketplaceSearchTask.SearchTerms = "song title"; marketplaceSearchTask.Show();

MediaPlayerLauncher

Lanza la aplicación Media Player

Reproduce el archivo especificado

Permite especificar:

localización del archivo

controles mostrados

orientación

MediaPlayerLauncher mediaPlayerLauncher = new MediaPlayerLauncher(); mediaPlayerLauncher.Media = new Uri("MyVideo.wmv", UriKind.Relative); mediaPlayerLauncher.Location = MediaLocationType.Data; mediaPlayerLauncher.Controls = MediaPlaybackControls.Pause | MediaPlaybackControls.Stop; mediaPlayerLauncher.Orientation = MediaPlayerOrientation.Landscape; mediaPlayerLauncher.Show();

Page 4: Modulo3 Launchers&Choosers

11/07/2011

4

PhoneCallTask

Lanza el teléfono mostrando el número y nombre del

contacto especificado

PhoneCallTask phoneCallTask = new PhoneCallTask(); phoneCallTask.PhoneNumber = “666123456"; phoneCallTask.DisplayName = “Eduardo"; phoneCallTask.Show();

SearchTask

Lanza la aplicación de búsqueda

Realiza búsquedas según los criterios proporcionados

SearchTask searchTask = new SearchTask(); searchTask.SearchQuery = "XBox game trailers"; searchTask.Show();

ShareLinkTask

Abre un diálogo para compartir links en redes sociales

ShareLinkTask shareLinkTask = new ShareLinkTask();

shareLinkTask.Title = "Code Samples";

shareLinkTask.LinkUri = new Uri("http://msdn.microsoft.com/en-

us/library/ff431744(v=VS.92).aspx", UriKind.Absolute);

shareLinkTask.Message = “Aquí hay un porrón de ejemplos sobre Windows Phone."; shareLinkTask.Show();

ShareStatusTask

Abre un diálogo para cambiar el estado en redes

sociales

ShareStatusTask shareStatusTask = new ShareStatusTask();

shareStatusTask.Status = “Este es mi estado actual."; shareStatusTask.Show();

Page 5: Modulo3 Launchers&Choosers

11/07/2011

5

SmsComposeTask

Lanza la aplicación de mensajería

Muestra nuevo SMS

Permite especificar destinatarios y cuerpo

del mensaje

SmsComposeTask smsComposeTask = new SmsComposeTask(); smsComposeTask.To = "5555555555"; smsComposeTask.Body = “Mira que aplicación mas chula."; smsComposeTask.Show();

WebBrowserTask

Lanza el navegador web en la URL especificada

WebBrowserTask webBrowserTask = new WebBrowserTask(); webBrowserTask.Uri = new Uri("http://www.mobilenug.es", UriKind.Absolute); webBrowserTask.Show();

Choosers

APIs mediante las que el usuario completa una tarea

A diferencia de launchers devuelven datos

Llaman a aplicaciones nativas CameraCaptureTask llama a la

aplicación Cámara

Pertenecen al nombre de espacio Microsoft.Phone.Task

Cómo utilizarlos:

Crear instancia del Chooser deseado (objeto global)

Establecer propiedades del objeto Chooser

Invocar Chooser (médoto Show())

Normalmente aplicación que llama un Chooser pasa a estado

dormant es reanudada al finalizar la tarea

Es posible que la aplicación sea finalizada no será restaurada

automáticamente

Choosers en Mango

AddressChooserTask* CameraCaptureTask

EmailAddressChooserTask GameInviteTask*

PhoneNumberChooserTask PhotoChooserTask

SaveContactTask SaveEmailAddressTask

SavePhoneNumberTask SaveRingtoneTask*

Page 6: Modulo3 Launchers&Choosers

11/07/2011

6

AddressChooserTask

Lanza la aplicación Contactos

Permite escoger un contacto al

usuario

Si el usuario completa la tarea se

lanza el evento Completed

El contacto escogido se devuelve

en un objeto AddressResult

public partial class MainPage : PhoneApplicationPage

{

// Declare the AddressChooserTask object with page scope.

AddressChooserTask addressChooserTask;

// Constructor

public MainPage()

{

InitializeComponent();

// Initialize the AddressChooserTask object and assign the Completed handler in the page constructor.

addressChooserTask = new AddressChooserTask();

addressChooserTask.Completed += new EventHandler<AddressResult>(addressChooserTask_Completed);

}

// In this example, the AddressChooserTask is shown in response to a button click.

private void addressChooserButton_Click(object sender, RoutedEventArgs e)

{

Try

{

addressChooserTask.Show();

}

catch (System.InvalidOperationException ex)

{

// Catch the exception, but no handling is necessary.

}

}

// The Completed event handler. In this example, the retrieved address is shown in a TextBlock control.

void addressChooserTask_Completed(object sender, AddressResult e)

{

if (e.TaskResult == TaskResult.OK)

{

textBlock1.Text = "The address for " + e.DisplayName + " is " + e.Address;

}

}

}

CameraCaptureTask

Lanza la cámara

Devuelve la imagen como Stream en un objeto PhotoResult

Nueva clase PhotoCamera integra funcionalidad de la

cámara en una app

Depurar con la herramienta WPConnect o Program Files\Microsoft SDKs\Windows Phone\v7.1\Tools\WPConnect

o Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\WPConnect

private void CameraCaptureTask_Clicked(object sender, RoutedEventArgs e)

{

try

{

CameraCaptureTask cameraCaptureTask = new CameraCaptureTask();

cameraCaptureTask.Completed += new

EventHandler<PhotoResult>(cameraCaptureTask_Completed);

cameraCaptureTask.Show();

}

catch { }

}

void cameraCaptureTask_Completed(object sender,

PhotoResult e)

{

if (e.TaskResult == TaskResult.OK)

{

BitmapImage bmp = new BitmapImage();

bmp.SetSource(e.ChosenPhoto);

myImage.Source = bmp;

}

}

EmailAddressChooserTask

Lanza la aplicación Contactos

Permite seleccionar un contacto

Devuelve string con dirección email seleccionado en un

objeto EmailResult

private void EmailAddressChooserTask_Clicked(object sender, RoutedEventArgs e)

{

try

{

EmailAddressChooserTask emailAddressChooserTask = new EmailAddressChooserTask();

emailAddressChooserTask.Completed += new

EventHandler<EmailResult>(emailAddressChooserTask_Completed);

emailAddressChooserTask.Show();

}

catch { }

}

void emailAddressChooserTask_Completed(object sender, EmailResult e)

{

if (e.TaskResult == TaskResult.OK)

{

EmailComposeTask emailComposeTask = new EmailComposeTask();

emailComposeTask.To = e.Email;

emailComposeTask.Subject = e.DisplayName + "This is an email";

emailComposeTask.Show();

}

}

Page 7: Modulo3 Launchers&Choosers

11/07/2011

7

GameInviteTask

Sólo para juegos Xbox LIVE

Envía invitaciones para sesiones

multijugador asíncronas

GameInviteTask private GameInviteTask_Clicked(object sender, RoutedEventArgs e)

{

try

{

GameInviteTask gameInviteTask = new GameInviteTask();

gameInviteTask.Completed += new EventHandler<TaskEventArgs>(gameInviteTask_Completed);

gameInviteTask.SessionId = "<my session id>";

gameInviteTask.Show();

}

catch { }

}

void gameInviteTask_Completed(object sender, TaskEventArgs e)

{

switch(e.TaskResult)

{

case TaskResult.OK:

// Game logic for when the invite was sent successfully

statusTextBlock.Text = "game invite sent.";

break;

case TaskResult.Cancel:

// Game logic for when the invite is cancelled by the user s

tatusTextBlock.Text = "game invite was cancelled.";

break;

case TaskResult.None:

// Game logic for when the invite could not be sent

statusTextBlock.Text = "game invite could not be sent.";

break;

}

}

PhotoChooserTask

Permite seleccionar una foto

Devuelve un stream en un objeto

PhotoResult

Utilizar WPConnect para apps con

PhotoChooserTask en el emulador

PhotoChooserTask photoChooserTask = new PhotoChooserTask();

photoChooserTask.Completed += new

EventHandler<PhotoResult>(photoChooserTask_Completed);

try

{

photoChooserTask.Show();

}

// Catch the exception, but no handling is necessary

catch { }

void photoChooserTask_Completed(object sender, PhotoResult e)

{

if (e.TaskResult == TaskResult.OK)

{

BitmapImage bmp = new BitmapImage();

bmp.SetSource(e.ChosenPhoto);

}

}

PhoneNumberChooserTask

Muestra los contactos

Permite elegir uno

Devuelve el nº de teléfono en un string dentro que

un objeto PhoneNumberResult

PhoneNumberChooserTask phoneNumberChooserTask = new phoneNumberChooserTask ();

phoneNumberChooserTask.Completed += new

EventHandler<PhotoResult>(photoNumberChooserTask_Completed);

try

{

phoneNumberChooserTask.Show();

}

// Catch the exception, but no handling is necessary

catch { }

void phoneNumberChooserTask _Completed(object sender,

PhoneNumberResult e)

{

if (e.TaskResult == TaskResult.OK)

{

PhoneCallTask phoneCallTask = new PhoneCallTask();

phoneCallTask.DisplayName = e.DisplayName;

phoneCallTask.PhoneNumber = e.PhoneNumber;

phoneCallTask.Show();

}

}

Page 8: Modulo3 Launchers&Choosers

11/07/2011

8

SaveContactTask

Lanza diálogo para guardar nuevo contacto

No devuelve datos

SaveContactTask saveContactTask = new SaveContactTask();

saveContactTask.Completed += new EventHandler<SaveContactResult>(saveContactTask_Completed);

try

{

saveContactTask.Show();

}

// Catch the exception, but no handling is necessary

catch { }

void saveContactTask_Completed(object sender, SaveContactResult e)

{

switch (e.TaskResult)

{

case TaskResult.OK:

// The user successfully saved the contact.

break;

case TaskResult.Cancel:

// The user cancelled the task.

break;

case TaskResult.None:

// No information about the result is available.

break;

}

}

SaveEmailAddressTask

Lanza diálogo para guardar nueva dirección de correo

No devuelve datos

SaveEmailAddressTask saveEmailAddressTask = new SaveEmailAddressTask();

saveEmailAddressTask.Completed += new EventHandler<TaskEventArgs>(saveEmailAddressTask_Completed);

try

{

saveEmailAddressTask.Show();

}

// Catch the exception, but no handling is necessary

catch { }

void saveEmailAddressTask_Completed (object sender,

SaveContactResult e)

{

If (e.TaskResult == TaskResult.OK)

{

statusTextBlock.Text = "Save completed.";

}

else

If (e.TaskResult == TaskResult.Cancel)

{

statusTextBlock.Text = "Save cancelled.";

}

}

SavePhoneNumberTask

Guarda nº teléfono proporcionado en Contactos

No devuelve datos

SavePhoneNumberTask savePhoneNumberTask = new SavePhoneNumberTask();

savePhoneNumberTask.Completed += new EventHandler<TaskEventArgs>(savePhoneNumberTask_Completed);

try

{

savePhoneNumberTask.Show();

}

// Catch the exception, but no handling is necessary

catch { }

void savePhoneNumberTask_Completed(object sender,

SaveContactResult e)

{

if (e.TaskResult == TaskResult.OK)

{

statusTextBlock.Text = "Save completed.";

}

else

if (e.TaskResult == TaskResult.Cancel)

{

statusTextBlock.Text = "Save cancelled.";

}

}

SaveRingtoneTask

Guarda el archivo de sonido proporcionado en la

lista de tonos

No devuelve datos

El archivo puede establecerse como tono por

defecto o para un determinado contacto

Restricciones • Archivo MP3 o WMA

• Duración < 40 segundos

• Sin protección DRM Tamaño < 1MB

Page 9: Modulo3 Launchers&Choosers

11/07/2011

9

SaveRingtoneTask

SavePhoneNumberTask saveRingtoneChooser = new SaveRingtoneTask();

saveRingtoneChooser.Completed += new EventHandler<TaskEventArgs>(saveRingtoneChooser_Completed);

try

{

saveRingtoneChooser.Source = new Uri("appdata:/myTone.mp3");

saveRingtoneChooser.DisplayName = "My custom ringtone";

saveRingtoneChooser.Show();

}

catch (Exception ex)

{

strMsg = ex.Message;

}

void saveRingtoneChooser_Completed(object sender, TaskEventArgs e)

{

if (e.TaskResult == TaskResult.OK)

{

statusTextBlock.Text = "Save completed.";

}

else

if (e.TaskResult == TaskResult.Cancel)

{

statusTextBlock.Text = "Save cancelled.";

}

}

Soporte en el emulador

Launchers y Choosers distinto comportamiento emulador - dispositivo

Clase Windows Phone Emulador

CameraCaptureTask Habilita la cámara para hacer una foto y devuelve la imagen a la aplicación.

No tiene cámara, devuelve una imagen por defecto a la aplicación.

EmailComposeTask Permite a la aplicación enviar un mail mostrando diálogo «nuevo mensaje».

No es funcional, no es posible asociar una cuenta de correo al emulador.

MarketplaceReviewTask Abre la aplicación cliente de Marketplace y muestra la puntuación y críticas del producto especificado.

Muestra un error porque no existe ningún Windows Live ID asociado.

MediaPlayerLauncher Dada una Uri permite abrir el media player a la aplicación.

La aplicación puede iniciar el media player y reproducir música, pero no hay visualización de vídeos.

PhoneCallTask Lanza el teléfono con el número especificado por la aplicación. Requiere tarjeta SIM.

Utiliza Fake GSM con una SIM ficticia.

SmsComposeTask Permite a una aplicación lanzar el cliente SMS con un nº de teléfono y/o mensaje. Requiere SIM. No devuelve estado ni error.

Utiliza Fake GSM con una SIM ficticia.

Recursos

Centro de desarrollo de WP7 en MSDN

http://msdn.microsoft.com/es-es/windowsphone/default.aspx

AppHub

http://create.msdn.com/

Windows Phone Developer Blog

http://windowsteamblog.com/windows_phone/b/wpdev

MobileNUG

http://www.mobilenug.es

Forums

http://forums.create.msdn.com/forums/