modulo3 launchers&choosers
DESCRIPTION
Launchers y Choosers de Windows Phone “Mango”TRANSCRIPT
![Page 1: Modulo3 Launchers&Choosers](https://reader038.vdocuments.us/reader038/viewer/2022100602/558790f3d8b42a560b8b4572/html5/thumbnails/1.jpg)
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](https://reader038.vdocuments.us/reader038/viewer/2022100602/558790f3d8b42a560b8b4572/html5/thumbnails/2.jpg)
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](https://reader038.vdocuments.us/reader038/viewer/2022100602/558790f3d8b42a560b8b4572/html5/thumbnails/3.jpg)
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](https://reader038.vdocuments.us/reader038/viewer/2022100602/558790f3d8b42a560b8b4572/html5/thumbnails/4.jpg)
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](https://reader038.vdocuments.us/reader038/viewer/2022100602/558790f3d8b42a560b8b4572/html5/thumbnails/5.jpg)
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](https://reader038.vdocuments.us/reader038/viewer/2022100602/558790f3d8b42a560b8b4572/html5/thumbnails/6.jpg)
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](https://reader038.vdocuments.us/reader038/viewer/2022100602/558790f3d8b42a560b8b4572/html5/thumbnails/7.jpg)
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](https://reader038.vdocuments.us/reader038/viewer/2022100602/558790f3d8b42a560b8b4572/html5/thumbnails/8.jpg)
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](https://reader038.vdocuments.us/reader038/viewer/2022100602/558790f3d8b42a560b8b4572/html5/thumbnails/9.jpg)
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/