Modulo3 Launchers&Choosers

427 views

Published on

Launchers y Choosers de Windows Phone “Mango”

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
427
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Modulo3 Launchers&Choosers

  1. 1. 11/07/2011 ¿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 Launchers en Mango APIs mediante las que el usuario completa una tarea BingMapsDirectionsTask* BingMapsTask* No devuelven datos EmailComposeTask MarketplaceDetailTask Pertenecen al nombre de espacio Microsoft.Phone.Task Cómo utilizarlos: MarketplaceHubTask MarketplaceReviewTask  Crear instancia del Launcher deseado MarketplaceSearchTask MediaPlayerLauncher  Establecer propiedades del objeto launcher  Invocar Launcher (médoto Show()) PhoneCallTask SearchTask Llaman a aplicaciones nativas  EmailComposeTask SmsComposeTask ShareLinkTask* llama a la aplicación de mensajería ShareStateTask* WebBrowserTask La aplicación que llama un launcher es desactivada y reactivada *Launchers nuevos con respecto a Windows Phone 7.0 1
  2. 2. 11/07/2011 BingMapsDirectionsTask BingMapsTask Lanza la aplicación Bing Maps  Lanza la aplicación Bing Maps Muestra direcciones entre dos puntos (LabeledMapLocation)  Permite configurar el punto central Si no se especifica el origen o destino se toma posición actual  del mapa (Geocordinate)  Admite cadena de búsqueda para BingMapsDirectionsTask bingMapsDirectionsTask = new BingMapsDirectionsTask(); marcar direcciones 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 BingMapsTask bingMapsTask = new BingMapsTask(); bingMapsDirectionsTask.Show(); // Omit the Center property to use the users current location. // bingMapsTask.Center = new GeoCoordinate(47.6204, -122.3493); bingMapsTask.SearchTerm = "coffee"; bingMapsTask.ZoomLevel = 2; EmailComposeTask MarketplaceDetailTask Lanza la aplicación Email  Lanza la aplicación cliente de Marketplace Windows Muestra nuevo mail Phone Configurar asunto, receptores, cuerpo mensaje  Muestra detalles del producto especificado EmailComposeTask emailComposeTask = new EmailComposeTask(); // Muestra una aplicación utilizando el ContenType por defecto emailComposeTask.Subject = "message subject"; MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask(); emailComposeTask.Body = "message body"; marketplaceDetailTask.ContentIdentifier = "<ID>"; emailComposeTask.To = "recipient@example.com"; marketplaceDetailTask.ContentType = MarketplaceContentType.Applications; emailComposeTask.Cc = "cc@example.com"; marketplaceDetailTask.Show(); emailComposeTask.Bcc = "bcc@example.com"; emailComposeTask.Show(); 2
  3. 3. 11/07/2011 MarketplaceHubTask MarketplaceReviewTask Lanza la aplicación cliente de Marketplace Windows  Lanza la aplicación cliente de Marketplace Windows Phone Phone Propiedad ContentType establece tipo de contenido  Muestra revisiones de la aplicación actual buscado MarketplaceReviewTask marketplaceReviewTask = new MarketplaceReviewTask(); MarketplaceHubTask marketplaceHubTask = new MarketplaceHubTask(); marketplaceReviewTask.Show(); marketplaceHubTask.ContentType = MarketplaceContentType.Music; marketplaceHubTask.Show(); MarketplaceSearchTask MediaPlayerLauncher Lanza la aplicación cliente de Marketplace Windows Phone  Lanza la aplicación Media Player Muestra resultados de búsqueda según los parámetros de  Reproduce el archivo especificado búsqueda proporcionados  Permite especificar:  localización del archivo //Búsqueda de una aplicación, utilizando ContentType por defecto.  controles mostrados MarketplaceSearchTask marketplaceSearchTask = new MarketplaceSearchTask();  orientación marketplaceSearchTask.SearchTerms = "accelerometer xna"; marketplaceSearchTask.Show(); MediaPlayerLauncher mediaPlayerLauncher = new MediaPlayerLauncher(); mediaPlayerLauncher.Media = new Uri("MyVideo.wmv", UriKind.Relative); // Búsqueda de una canción. mediaPlayerLauncher.Location = MediaLocationType.Data; MarketplaceSearchTask marketplaceSearchTask = new MarketplaceSearchTask(); mediaPlayerLauncher.Controls = MediaPlaybackControls.Pause | MediaPlaybackControls.Stop; marketplaceSearchTask.ContentType = MarketplaceContentType.Music; mediaPlayerLauncher.Orientation = MediaPlayerOrientation.Landscape; marketplaceSearchTask.SearchTerms = "song title"; mediaPlayerLauncher.Show(); marketplaceSearchTask.Show(); 3
  4. 4. 11/07/2011 SearchTask PhoneCallTask  Lanza el teléfono mostrando el número y nombre del  Lanza la aplicación de búsqueda contacto especificado  Realiza búsquedas según los criterios proporcionados SearchTask searchTask = new SearchTask(); searchTask.SearchQuery = "XBox game trailers";PhoneCallTask phoneCallTask = new PhoneCallTask(); searchTask.Show();phoneCallTask.PhoneNumber = “666123456";phoneCallTask.DisplayName = “Eduardo";phoneCallTask.Show(); ShareLinkTask ShareStatusTask  Abre un diálogo para compartir links en redes sociales  Abre un diálogo para cambiar el estado en redes sociales ShareLinkTask shareLinkTask = new ShareLinkTask(); shareLinkTask.Title = "Code Samples"; shareLinkTask.LinkUri = new Uri("http://msdn.microsoft.com/en- ShareStatusTask shareStatusTask = new ShareStatusTask(); us/library/ff431744(v=VS.92).aspx", UriKind.Absolute); shareStatusTask.Status = “Este es mi estado actual."; shareLinkTask.Message = “Aquí hay un porrón de ejemplos sobre Windows Phone."; shareStatusTask.Show(); shareLinkTask.Show(); 4
  5. 5. 11/07/2011 SmsComposeTask WebBrowserTask Lanza la aplicación de mensajería  Lanza el navegador web en la URL especificada Muestra nuevo SMS Permite especificar destinatarios y cuerpo del mensaje WebBrowserTask webBrowserTask = new WebBrowserTask(); webBrowserTask.Uri = new Uri("http://www.mobilenug.es", UriKind.Absolute); SmsComposeTask smsComposeTask = new SmsComposeTask(); webBrowserTask.Show(); smsComposeTask.To = "5555555555"; smsComposeTask.Body = “Mira que aplicación mas chula."; smsComposeTask.Show(); Choosers Choosers en Mango APIs mediante las que el usuario completa una tarea A diferencia de launchers devuelven datos AddressChooserTask* CameraCaptureTask Llaman a aplicaciones nativas  CameraCaptureTask llama a la aplicación Cámara EmailAddressChooserTask GameInviteTask* Pertenecen al nombre de espacio Microsoft.Phone.Task Cómo utilizarlos: PhoneNumberChooserTask PhotoChooserTask  Crear instancia del Chooser deseado (objeto global)  Establecer propiedades del objeto Chooser SaveContactTask SaveEmailAddressTask  Invocar Chooser (médoto Show()) Normalmente aplicación que llama un Chooser pasa a estado dormant  es reanudada al finalizar la tarea SavePhoneNumberTask SaveRingtoneTask* Es posible que la aplicación sea finalizada  no será restaurada automáticamente 5
  6. 6. 11/07/2011 public partial class MainPage : PhoneApplicationPage { // Declare the AddressChooserTask object with page scope. AddressChooserTask addressChooserTask; AddressChooserTask // Constructor public MainPage() { InitializeComponent(); // Initialize the AddressChooserTask object and assign the Completed handler in the page constructor.  Lanza la aplicación Contactos addressChooserTask = new AddressChooserTask(); addressChooserTask.Completed += new EventHandler<AddressResult>(addressChooserTask_Completed); }  Permite escoger un contacto al // In this example, the AddressChooserTask is shown in response to a button click. private void addressChooserButton_Click(object sender, RoutedEventArgs e) usuario { Try  Si el usuario completa la tarea se { addressChooserTask.Show(); } lanza el evento Completed catch (System.InvalidOperationException ex) {  El contacto escogido se devuelve } // Catch the exception, but no handling is necessary. } en un objeto AddressResult // 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 EmailAddressChooserTask  Lanza la cámara  Lanza la aplicación Contactos  Devuelve la imagen como Stream en un objeto PhotoResult  Permite seleccionar un contacto  Nueva clase PhotoCamera integra funcionalidad de la  Devuelve string con dirección email seleccionado en un cámara en una app objeto EmailResult  Depurar con la herramienta WPConnect private void EmailAddressChooserTask_Clicked(object sender, RoutedEventArgs e) { o Program FilesMicrosoft SDKsWindows Phonev7.1ToolsWPConnect try o Program Files (x86)Microsoft SDKsWindows Phonev7.1ToolsWPConnect { EmailAddressChooserTask emailAddressChooserTask = new EmailAddressChooserTask(); emailAddressChooserTask.Completed += newprivate void CameraCaptureTask_Clicked(object sender, RoutedEventArgs e) EventHandler<EmailResult>(emailAddressChooserTask_Completed); void cameraCaptureTask_Completed(object sender,{ emailAddressChooserTask.Show(); PhotoResult e) try } { void emailAddressChooserTask_Completed(object sender, EmailResult e) { catch { } if (e.TaskResult == TaskResult.OK) { CameraCaptureTask cameraCaptureTask = new CameraCaptureTask(); } { if (e.TaskResult == TaskResult.OK) cameraCaptureTask.Completed += new BitmapImage bmp = new BitmapImage(); { EventHandler<PhotoResult>(cameraCaptureTask_Completed); bmp.SetSource(e.ChosenPhoto); EmailComposeTask emailComposeTask = new EmailComposeTask(); cameraCaptureTask.Show(); myImage.Source = bmp; emailComposeTask.To = e.Email; } } emailComposeTask.Subject = e.DisplayName + "This is an email"; catch { } } emailComposeTask.Show();} } } 6
  7. 7. 11/07/2011 GameInviteTask GameInviteTask private GameInviteTask_Clicked(object sender, RoutedEventArgs e) { try { GameInviteTask gameInviteTask = new GameInviteTask();  Sólo para juegos Xbox LIVE gameInviteTask.Completed += new EventHandler<TaskEventArgs>(gameInviteTask_Completed); gameInviteTask.SessionId = "<my session id>"; gameInviteTask.Show();  Envía invitaciones para sesiones } catch { } multijugador asíncronas } 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 PhoneNumberChooserTask  Permite seleccionar una foto  Muestra los contactos  Devuelve un stream en un objeto  Permite elegir uno PhotoResult  Devuelve el nº de teléfono en un string dentro que  Utilizar WPConnect para apps con un objeto PhoneNumberResult PhotoChooserTask en el emulador PhoneNumberChooserTask phoneNumberChooserTask = new phoneNumberChooserTask (); phoneNumberChooserTask.Completed += new EventHandler<PhotoResult>(photoNumberChooserTask_Completed);PhotoChooserTask photoChooserTask = new PhotoChooserTask(); tryphotoChooserTask.Completed += new { EventHandler<PhotoResult>(photoChooserTask_Completed); phoneNumberChooserTask.Show(); void phoneNumberChooserTask _Completed(object sender,try } PhoneNumberResult e){ // Catch the exception, but no handling is necessary { photoChooserTask.Show(); void photoChooserTask_Completed(object sender, PhotoResult e) catch { } if (e.TaskResult == TaskResult.OK)} { {// Catch the exception, but no handling is necessary if (e.TaskResult == TaskResult.OK) PhoneCallTask phoneCallTask = new PhoneCallTask();catch { } { phoneCallTask.DisplayName = e.DisplayName; BitmapImage bmp = new BitmapImage(); phoneCallTask.PhoneNumber = e.PhoneNumber; bmp.SetSource(e.ChosenPhoto); phoneCallTask.Show(); } } } } 7
  8. 8. 11/07/2011 SaveContactTask SaveEmailAddressTask Lanza diálogo para guardar nuevo contacto  Lanza diálogo para guardar nueva dirección de correo No devuelve datos  No devuelve datos SaveEmailAddressTask saveEmailAddressTask = new SaveEmailAddressTask();SaveContactTask saveContactTask = new SaveContactTask(); saveEmailAddressTask.Completed += new EventHandler<TaskEventArgs>(saveEmailAddressTask_Completed);saveContactTask.Completed += new EventHandler<SaveContactResult>(saveContactTask_Completed);try try{ { saveContactTask.Show(); void saveContactTask_Completed(object sender, SaveContactResult e) void saveEmailAddressTask_Completed (object sender, saveEmailAddressTask.Show();} { SaveContactResult e) }// Catch the exception, but no handling is necessary switch (e.TaskResult) { // Catch the exception, but no handling is necessarycatch { } { If (e.TaskResult == TaskResult.OK) catch { } case TaskResult.OK: { // The user successfully saved the contact. statusTextBlock.Text = "Save completed."; break; } case TaskResult.Cancel: else // The user cancelled the task. If (e.TaskResult == TaskResult.Cancel) break; { case TaskResult.None: statusTextBlock.Text = "Save cancelled."; // No information about the result is available. } break; } } } SavePhoneNumberTask SaveRingtoneTask Guarda nº teléfono proporcionado en Contactos  Guarda el archivo de sonido proporcionado en la lista de tonos No devuelve datos  No devuelve datosSavePhoneNumberTask savePhoneNumberTask = new SavePhoneNumberTask();savePhoneNumberTask.Completed += new EventHandler<TaskEventArgs>(savePhoneNumberTask_Completed);  El archivo puede establecerse como tono portry defecto o para un determinado contacto{ savePhoneNumberTask.Show(); void savePhoneNumberTask_Completed(object sender, SaveContactResult e)  Restricciones} { • Archivo MP3 o WMA// Catch the exception, but no handling is necessary if (e.TaskResult == TaskResult.OK)catch { } { • Duración < 40 segundos statusTextBlock.Text = "Save completed."; • Sin protección DRM Tamaño < 1MB } else if (e.TaskResult == TaskResult.Cancel) { statusTextBlock.Text = "Save cancelled."; } } 8
  9. 9. 11/07/2011 SaveRingtoneTask Soporte en el emulador SavePhoneNumberTask saveRingtoneChooser = new SaveRingtoneTask(); saveRingtoneChooser.Completed += new EventHandler<TaskEventArgs>(saveRingtoneChooser_Completed);  Launchers y Choosers distinto comportamiento emulador - dispositivo try { saveRingtoneChooser.Source = new Uri("appdata:/myTone.mp3"); Clase Windows Phone Emulador saveRingtoneChooser.DisplayName = "My custom ringtone"; saveRingtoneChooser.Show(); Habilita la cámara para hacer una foto y No tiene cámara, devuelve una imagen por } CameraCaptureTask devuelve la imagen a la aplicación. defecto a la aplicación. catch (Exception ex) { Permite a la aplicación enviar un mail No es funcional, no es posible asociar una strMsg = ex.Message; EmailComposeTask mostrando diálogo «nuevo mensaje». cuenta de correo al emulador. } Abre la aplicación cliente de Marketplace y Muestra un error porque no existe ningún MarketplaceReviewTask muestra la puntuación y críticas del void saveRingtoneChooser_Completed(object sender, TaskEventArgs e) Windows Live ID asociado. producto especificado. { if (e.TaskResult == TaskResult.OK) La aplicación puede iniciar el media player y { Dada una Uri permite abrir el media player a MediaPlayerLauncher reproducir música, pero no hay visualización statusTextBlock.Text = "Save completed."; la aplicación. de vídeos. } else Lanza el teléfono con el número especificado if (e.TaskResult == TaskResult.Cancel) PhoneCallTask Utiliza Fake GSM con una SIM ficticia. por la aplicación. Requiere tarjeta SIM. { statusTextBlock.Text = "Save cancelled."; Permite a una aplicación lanzar el cliente } SmsComposeTask SMS con un nº de teléfono y/o mensaje. Utiliza Fake GSM con una SIM ficticia. } Requiere SIM. No devuelve estado ni error. Recursos Centro de desarrollo de WP7 en MSDNhttp://msdn.microsoft.com/es-es/windowsphone/default.aspx AppHubhttp://create.msdn.com/ Windows Phone Developer Bloghttp://windowsteamblog.com/windows_phone/b/wpdev MobileNUGhttp://www.mobilenug.es Forumshttp://forums.create.msdn.com/forums/ 9

×