0

Localizar direcciones con Bing Maps en Windows Pone

Posted by Williams Rodriguez on September 19, 2011 in Launchers and Choosers

Este lanzador llega con Windows Phone Mango, y permite visualizar direcciones especificas en el mapa de Bing en nuestro dispositivo móvil.

Como todos los lanzadores tenemos que instanciar la clase, asignar datos a las propiedades y finalmente utilizar el método Show.

  1. private void button1_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             BingMapsTask bmt = new BingMapsTask();
  4.             bmt.SearchTerm = “Coatzacoalcos”;
  5.             bmt.ZoomLevel = 4;
  6.             bmt.Show();
  7.         }

 

BingMapsTask

Aquí en código fuente…

Saludos…

Tags: , ,

 
0

Programando aplicaciones que usan el Marketplace de WP7

Posted by Williams Rodriguez on September 18, 2011 in Launchers and Choosers

En este articulo revisaremos alguna de las tareas mas comunes con el Marketplace realizadas por aplicaciones Windows Phone 7.

MarketplacehubTask

Cuando necesitamos lanzar la aplicación cliente del Marketplace desde una aplicación y que esta muestre la información especialmente agrupada, utilizaremos la clase MaketplacehubTask y estableceremos la propiedad ContentType a uno de los valores de la enumeracion MarketplaceContentType:

  • MarketplaceContentType.Music Agrupación por música.
  • MarketplaceContentType.Applications Agrupación por aplicaciones
  1. private void btnMarketplaceHub_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             MarketplaceHubTask marketplaceHubTask = new MarketplaceHubTask();
  4.             marketplaceHubTask.ContentType = MarketplaceContentType.Applications;
  5.             marketplaceHubTask.Show();
  6.         }

 

Marketplace_1

MarketplaceSearchTask

Con la clase MarketplaceSearchTask lanzamos la aplicación cliente del Marketplace mostrando los resultados de una búsqueda basada en parámetros dados previamente. Nota que podemos realizar la búsqueda por palabra o tipo de contenido.

  1. private void btnMarketplaceSearch_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             MarketplaceSearchTask marketplaceSearchTask = new MarketplaceSearchTask();
  4.             marketplaceSearchTask.SearchTerms = "games";
  5.             marketplaceSearchTask.Show();
  6.  
  7.         }

 

Marketplace_2

MarketplaceDetailTask

Esta clase nos sirve para mostrar el detalle de un producto en el marketplace a partir de su identificador único.

  1. private void btnMarketplaceDetail_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
  4.             marketplaceDetailTask.ContentIdentifier = "ea9a24ad-d2d1-df11-9eae-00237de2db9e";
  5.             marketplaceDetailTask.Show();
  6.         }

Marketplace_3

Aquí en código…

Saludos…

Tags: , , , ,

 
0

Ver y escuchar Video-Música en WP7 desde C#

Posted by Williams Rodriguez on September 17, 2011 in Launchers and Choosers

En este post revisaremos los temas relacionados a ver videos o escuchar música desde Windows Phone 7usando el MediaPlayerLauncher.

MediaPlayerLauncher

El MediaPlayerLauncher lanza la aplicación Media Player y ejecuta el archivo multimedia previamente especificado, cabe mencionar que los archivos multimedia son almacenados en el Isolate Storage o en el directorio de instalación de la aplicación, es por esto que para especificar la localización utilizamos la enumeración MediaLocationType:

  • MediaLocationType.Data Los archivos multimedia son almacenados en el Isolated Storage cuando con guardados en el disco por la aplicación.
  • MediaLocationType.Install Almacenados en el directorio de instalación de la aplicación si están integrados a la aplicación en archivos .xap
  • MediaLocationType.None El archivo multimedia no se encuentra en ninguno de los dos almacenamientos anteriores. hay que notar que el método Show lanzara un FileNotFoundException si este valor es usado.

Opcionalmente podemos especificar que uno o mas controles deben ser mostrados por el Media Player ya sea a nivel de bits o una combinación de valores MediaPlaybackControls:

  • MediaPlaybackControls.All
  • MediaPlaybackControls.None
  • MediaPlaybackControls.Pause
  • MediaPlaybackControls.Stop
  • MediaPlaybackControls.Skip
  • MediaPlaybackControls.FastForward
  • MediaPlaybackControls.Rewind

Así que todo lo que necesitamos hacer para tener una aplicación multimedia en nuestra aplicación es crear una instancia de la clase MediaPlayerLauncher establecer las propiedades y llamar al método Show().

WindowsMedia

Nota: En el emulador de Windows Phone 7 se pueden iniciar el media player y el usuario puede ejecutar un archivo de música, pero los videos no son rende rizados.

Para mas información acerca de los lanzadores y selectores que son soportados por el emulador de Windows Phone 7 entra a este link.

La lista completa de codec’s multimedia que son soportados por Windows Phone son mostrados en este link.

Saludos…

Tags: , , ,

 
0

Uso de los “Choosers” “Search and Browse” en WP7

Posted by Williams Rodriguez on September 17, 2011 in Launchers and Choosers

En este post analizaremos el uso de SearchTask y WebBrowserTask en Windows Phone 7.

SearchTask

Usando el SearchTask podemos lanzar la aplicación de búsqueda Web. Todo lo que necesitamos hacer para ejecutar esta funcionalidad es crear una instancia de la clase SearchTask, establecer el valor buscado al campo SearchTask y llamar el método Show().

  1. private void btnSearch_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             SearchTask searchTask = new SearchTask();
  4.             searchTask.SearchQuery = "WindowsPhoneGeek";
  5.             searchTask.Show();
  6.         }

 

Search

 

WebBrowserTask

Usando el WebBrowserTask podemos lanzar el navegador Web por defecto del Windows Phone en una URL previamente dada. Todos lo que tenemos que hacer para usar esta funcionalidad es crear una instancia del WebBrowserTask, establecer el cambo URL con la dirección deseada y llamar el método Show().

 

  1. private void btnBrowse_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             WebBrowserTask webBrowserTask = new WebBrowserTask();
  4.             webBrowserTask.URL = "http://www.williamsrodriguez.com";
  5.             webBrowserTask.Show();
  6.         }

 

PageWeb

Aquí el código…

Saludos…

Tags: , ,

 
0

Manejo de Números Telefónicos en WP desde C#

Posted by Williams Rodriguez on September 16, 2011 in Launchers and Choosers

En este post hablaremos sobre algunas formas existentes para manipular números telefónicos a través de las API’s “Launchers and Choosers” en Windows Phone 7.

Utilizaremos las tareas SavePhoneNumberTask, PhoneNumberChooserTask y PhoneCallTask para agregar un numero telefónico en un contacto, seleccionar un numero existente de la lista de contactos y realizar una llamada.

En incluso veremos un ejemplo de como enviar mensajes de texto mediante SmsComposeTask.

SavePhoneNumberTask

Este lanzador como su nombre sugiere lanza el listado de contactos y almacena el numero telefónico dado en el contacto seleccionado. Esto es logrado mediante el método Show() del objeto SavePhoneNumberTask y el resultado de la operación chooser lo obtenemos mediante el evento Completed.

Ejemplo:

  1. public partial class PageSaveNumber : PhoneApplicationPage
  2.     {
  3.         SavePhoneNumberTask savePhoneNumberTask;
  4.  
  5.         public PageSaveNumber()
  6.         {
  7.             InitializeComponent();
  8.  
  9.             this.savePhoneNumberTask = new SavePhoneNumberTask();
  10.             this.savePhoneNumberTask.Completed += new EventHandler<TaskEventArgs>(savePhoneNumberTask_Completed);
  11.         }
  12.  
  13.         private void savePhoneNumberTask_Completed(object sender, TaskEventArgs e)
  14.         {
  15.             if (e.TaskResult == TaskResult.OK)
  16.             {
  17.                 MessageBox.Show("Numero Almacenado…");
  18.             }
  19.         }
  20.  
  21.         private void btnSavePhoneNumber_Click(object sender, RoutedEventArgs e)
  22.         {
  23.             savePhoneNumberTask.PhoneNumber = "921 111 99 69";
  24.             savePhoneNumberTask.Show();
  25.         }
  26.     }

 

SaveNumbers

 

PhoneNumberChooserTask

Este lanzador permite lanzar desde nuestra aplicación la lista de contactos para que el usuario seleccione alguno de los números del contacto seleccionado. En cuanto a la forma de lanzarlo y obtener el numero seleccionado es similar al descrito en el ejemplo anterior.

Ejemplo:

  1. public partial class PageNumberChooser : PhoneApplicationPage
  2.     {
  3.         PhoneNumberChooserTask phoneNumberChooserTask;
  4.  
  5.         public PageNumberChooser()
  6.         {
  7.             InitializeComponent();
  8.  
  9.             this.phoneNumberChooserTask = new PhoneNumberChooserTask();
  10.             this.phoneNumberChooserTask.Completed += new EventHandler<PhoneNumberResult>(phoneNumberChooserTask_Completed);
  11.         }
  12.  
  13.         private void phoneNumberChooserTask_Completed(object sender, PhoneNumberResult e)
  14.         {
  15.             if (e.TaskResult == TaskResult.OK)
  16.             {
  17.                 // Create, initialize and show SMS composer launcher
  18.                 MessageBox.Show( "Numero Seleccionado:" + e.PhoneNumber);
  19.             }
  20.         }
  21.  
  22.         private void btnChoosePhoneNumber_Click(object sender, RoutedEventArgs e)
  23.         {
  24.             phoneNumberChooserTask.Show();
  25.         }
  26.     }

 

CallNumer

 

SmsComposeTask

Si lo que necesitamos es crear y enviar un mensaje desde nuestra aplicación lo haremos mediante el objetod SmsComposeTask, que mostrara la pantalla para crear un nuevo mensaje.

Ejemplo:

  1. public partial class PageSendMessage : PhoneApplicationPage
  2.     {
  3.         SmsComposeTask smsComposeTask;
  4.  
  5.         public PageSendMessage()
  6.         {
  7.             InitializeComponent();
  8.  
  9.             this.smsComposeTask = new SmsComposeTask();
  10.         }
  11.  
  12.         private void btnSendSMS_Click(object sender, RoutedEventArgs e)
  13.         {
  14.             smsComposeTask.To = "921 111 99 69";
  15.             smsComposeTask.Body =
  16.                 "Hello! This is a test sms message!";
  17.             smsComposeTask.Show();
  18.         }
  19.     }

 

SendSms

Aquí el código Fuente…

Saludos..

Tags: , , , ,

 
0

Seleccionar/Tomar Fotografías mediante desde WP7

Posted by Williams Rodriguez on September 14, 2011 in Launchers and Choosers

En este post analizaremos la forma en la cual Windows Phone 7 nos permite lanzar la librería de fotografías en el teléfono y habilita al usuario seleccionar una e incluso tomar una nueva fotografía desde el mismo dispositivo.

Seleccionar una foto existente en la librería

Para realizar este ejemplo necesitaremos hacer uso de la clase PhotoChooserTask, esta clase expone el método Show() que es el encargado de lanzar la librería al usuario y podemos recuperar la selección hecha a través del evento Completed.

  • NameSpace: Microsoft.Phone.Task
  • Assembly: Microsoft.Phone ( en Microsoft.Phone.dll )
  1. public partial class Page1 : PhoneApplicationPage
  2.     {
  3.         PhotoChooserTask photoChooserTask;
  4.  
  5.         public Page1()
  6.         {
  7.             InitializeComponent();
  8.  
  9.             this.photoChooserTask = new PhotoChooserTask();
  10.             this.photoChooserTask.Completed += new EventHandler<PhotoResult>(photoChooserTask_Completed);
  11.         }
  12.  
  13.         private void loadPhoto_Click(object sender, RoutedEventArgs e)
  14.         {
  15.             photoChooserTask.Show();
  16.         }
  17.  
  18.         private void photoChooserTask_Completed(object sender, PhotoResult e)
  19.         {
  20.             BitmapImage image = new BitmapImage();
  21.             image.SetSource(e.ChosenPhoto);
  22.             this.img.Source = image;
  23.         }
  24.     }

Nota: El photoChooserTask_Completed es lanzado inmediatamente después de que la foto es seleccionada, por lo tanto podemos fácilmente manipular el PhotoResult recibido en este caso el stream de la foto seleccionada, en nuestro ejemplo tenemos un control imagen en donde es mostrada.

ChooserTask

Tomar una foto desde la cámara

La clase CameraCaptureTask lanza la cámara del Windows Phone y habilita a los usuario a tomar una foto desde la aplicación, una vez que la foto es tomada, podemos almacenarla en el Media Library para lo cual necesitamos una referencia a XNA.Framework o simplemente la establecemos como ImageSource como en el ejemplo anterior.

  1. public partial class Page2 : PhoneApplicationPage
  2.     {
  3.         CameraCaptureTask photoCameraCapture;
  4.  
  5.         public Page2()
  6.         {
  7.             InitializeComponent();
  8.  
  9.             this.photoCameraCapture = new CameraCaptureTask();
  10.             this.photoCameraCapture.Completed += new EventHandler<PhotoResult>(photoCameraCapture_Completed);
  11.         }
  12.  
  13.         private void takePhoto_Click(object sender, RoutedEventArgs e)
  14.         {
  15.             photoCameraCapture.Show();
  16.         }
  17.  
  18.         private void photoCameraCapture_Completed(object sender, PhotoResult e)
  19.         {
  20.             if (e.TaskResult == TaskResult.OK)
  21.             {
  22.                 BitmapImage image = new BitmapImage();
  23.                 image.SetSource(e.ChosenPhoto);
  24.                 this.img.Source = image;
  25.             }
  26.         }
  27.     }

Aquí el código

Saludos…

Tags: , ,

 
0

Trabajando con Emails en Windows Phone 7

Posted by Williams Rodriguez on September 13, 2011 in Launchers and Choosers

En este articulo vamos a cubrir las formas en las que podemos manejar los correos electrónicos en Windows Phone 7 con SaveEmailAdressTask, EmailAddressChoserTask y EmailComposeTask. Las tareas mas comunes son:

  • Crear un correo electrónico
  • Enviar correos electrónicos
  • Agregar una nueva dirección a los detalles de un contacto
  • Seleccionar una dirección de correo de lista existente

Almacenar un correo a la lista de contactos

Esta tarea es ejecutada con ayuda de la clase SaveEmailAddress:

  • Namespace: Microsoft.Phone.Task
  • Assembly: Microsoft.Phone (Microsoft.Phone.dll)

Permite que tu aplicación muestre la pantalla de contactos y habilita a los usuarios para guardar un nuevo correo electrónico a la lista de contactos, esto es hecho a través del método Show() del objeto SaveEmailAddressTask y podemos obtener el resultado de la operación chooser manejando el evento.

  1. public partial class Page1 : PhoneApplicationPage
  2.     {
  3.         SaveEmailAddressTask saveEmailAddressTask;
  4.  
  5.         public Page1()
  6.         {
  7.             InitializeComponent();
  8.  
  9.             this.saveEmailAddressTask = new SaveEmailAddressTask();
  10.             this.saveEmailAddressTask.Completed += new EventHandler<TaskEventArgs>(saveEmailAddressTask_Completed);
  11.         }
  12.  
  13.         private void saveEmailAddressTask_Completed(object sender, TaskEventArgs e)
  14.         {
  15.             if (e.TaskResult == TaskResult.OK)
  16.             {
  17.                 MessageBox.Show("Email successfully Saved..");
  18.             }
  19.         }
  20.     }

Siempre podremos modificar el actual objeto a través de sus propiedades y métodos

Elegir un correo electrónico existente

Escoger un email existente es una tarea fácil a través de la clase EmailAddressChooserTask, la cual lanza la lista de contactos de Windows Phone y permite al usuario seleccionar alguno en particular.

  1. public partial class Page1 : PhoneApplicationPage
  2.     {
  3.         EmailAddressChooserTask emailAddressChooserTask;
  4.  
  5.         public Page1()
  6.         {
  7.             InitializeComponent();
  8.  
  9.             this.emailAddressChooserTask = new EmailAddressChooserTask();
  10.             this.emailAddressChooserTask.Completed += new EventHandler<EmailResult>(emailAddressChooserTask_Completed);
  11.         }
  12.  
  13.         private void emailAddressChooserTask_Completed(object sender, EmailResult e)
  14.         {
  15.             if (e.TaskResult == TaskResult.OK)
  16.             {
  17.                 MessageBox.Show("Selected email :" + e.Email);
  18.             }
  19.         }
  20.     }

 

Crear un correo electrónico

EmailComposeTask nos permite lanzar el formulario de nuevo correo electrónico desde nuestra aplicación, cabe mencionar que la dirección de correo puede ser dada como un simple String sin embargo en el mundo real el usuario final escogerá esta dirección desde su lista de contacto o en su defecto la ingresara manualmente.

Ejemplo #1

  1. private void emailAddressChooserTask_Completed(object sender, EmailResult e)
  2.         {
  3.             if (e.TaskResult == TaskResult.OK)
  4.             {
  5.                 MessageBox.Show("Selected email :" + e.Email);
  6.         
  7.                 //in-real world application user expect to select it from his contacts and if not found enter manually.
  8.                 //EmailComposeTask emailComposeTask = new EmailComposeTask();
  9.                 //emailComposeTask.To = e.Email;
  10.                 //emailComposeTask.To = saveEmailAddressTask.Email;
  11.                 //emailComposeTask.Body = "WP7 Emails Demo";
  12.                 //emailComposeTask.Cc = "testmail2@test.com";
  13.                 //emailComposeTask.Subject = "Windows Phone 7";
  14.                 //emailComposeTask.Show();
  15.             }
  16.         }

Ejemplo #2

  1. private void btnComposeMail_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             EmailComposeTask emailComposeTask = new EmailComposeTask();
  4.             emailComposeTask.To = "chris@example.com";
  5.             emailComposeTask.To = saveEmailAddressTask.Email;
  6.             emailComposeTask.Body = "WP7 Emails Demo";
  7.             emailComposeTask.Cc = "testmail2@test.com";
  8.             emailComposeTask.Subject = "Windows Phone 7";
  9.             emailComposeTask.Show();
  10.         }

Nota: Desafortunadamente algunos Launchers no trabajan en el emulador. Por ejemplo el EmailComposeTask asume que tienes una cuenta de correo configurada en el dispositivo y como el emulador nos impide configurar alguna nos es imposible probar el Launcher.

Email  Aquí el código de ejemplo

Saludos…

Tags: , , ,

 
0

Introducción a “Launchers and Choosers” en WP7

Posted by Williams Rodriguez on September 13, 2011 in Launchers and Choosers

En este articulo haremos una breve introducción a los “Launchers and Choosers” de Windows Phone 7. Son APIs que habilitan a las aplicaciones Windows Phone para proveer un conjunto de tareas comunes a sus usuarios (acceso indirecto a las características del teléfono) como llamadas telefónicas, envió de correos electrónicos y tomar fotografías.

Launchers

Básicamente son un conjunto de APIs que te permiten acceder a funcionalidades propias del teléfono como lo son el envió de SMS, búsqueda de correos electrónicos, etc. Sin embargo algo muy importante es que los Launchers NO regresan datos a la aplicación que los llamo.

Aquí una lista de los Lauchers habilitados para WP7.1:

  • Namespace: Microsoft.Phone.Task
  • Assembly: Microsoft.Phone (en Microsoft.phone.dll)

EmailComposeTask Permite que envíes un correo electrónico desde tu aplicación sin lanzar el formulario de nuevo email.

MarketplaceDetailTask Lanza la aplicación cliente del Marketplace en el Windows Phone y despliega una pagina con los detalles de un producto especificado.

MarketplaceHubTask Lanza la aplicación cliente de Marketplace en el Windows Phone.

MarketplaceReviewTask Lanza la aplicación cliente del Marketplace en el Windows Phone y despliega una pagina con el resumen de un producto especifico.

MarketplaceSearchTask Lanza la aplicación cliente del Marketplace en el Windows Phone la cual muestra los resultados de la búsqueda obtenidos a partir de los parámetros proporcionados.

MediaPlayerLauncher Lanza la aplicación media player y ejecuta el archivo media especificado.

PhoneCallTask Habilita que tu aplicación realice llamadas telefónicas lanzando la aplicación de teléfono nativa en el dispositivo.

SearchTask Lanza la aplicación Web de Búsqueda.

SmsComposeTask Lanza la aplicación para enviar un nuevo mensaje SMS.

WebBrowserTask Lanza el navegador Web y despliega la URL especificada.

Nota: Desafortunadamente algunos Launchers no trabajan en el emulador. Por ejemplo el EmailComposeTask asume que tienes una cuenta de correo configurada en el dispositivo y como el emulador nos impide configurar alguna nos es imposible probar el Launcher.

Nota: Cada Launcher tiene su propio conjunto de propiedades, pero después de configurar cualquiera de ellas es necesario llamar al método Show() para que sea mostrado al usuario.

Choosers

Un Chooser al igual que un launcher es una API que permite lanzar una aplicación compilada en el Windows Phone, sin embargo el Chooser recupera información relacionada con la interacción del usuario y la aplicación. Por ejemplo:

Tu aplicación puede utilizar un Chooser para lanzar el catalogo de fotos y regresar la seleccionada o bien lanzar la cámara y regresarte la foto tomada.

Aquí una lista de los Lauchers habilitados para WP7.1:

  • Namespace: Microsoft.Phone.Task
  • Assembly: Microsoft.Phone (en Microsoft.phone.dll)

CameraCaptureTask Lanza la aplicación cámara para que el usuario tome una foto.

EmailAdressChooserTask Lanza la aplicación de contactos, que permite al usuario seleccionar la dirección de correo de un contacto.

PhoneNumberChooserTask Lanza la aplicación de contactos, que permite al usuario seleccionar el numero de teléfono de un contacto.

PhotoChooserTask Lanza el seleccionador de fotos para que el usuario escoja una foto.

SaveEmailAddressTask Lanza la aplicación de contactos y almacena la dirección de correo dada a la lista de contactos.

SavePhoneNumberTask Lanza la aplicación de contactos y almacena el numero telefónico dado a la lista de contactos.

Nota: Un ejemplo de la manera de hacer esto posible en programación:

  1. private void photoChooserTask_Completed(object sender, PhotoResult e)
  2.         {
  3.             BitmapImage image = new BitmapImage();
  4.             image.SetSource(e.ChosenPhoto);
  5.             this.img.Source = image;
  6.         }

 

Esta es toda la información que necesitas para empezar a desarrollar tus primeras aplicaciones, mas adelante veremos cada una de estas tareas mas a detalle.

Saludos…

Tags: , ,

 
0

Leer y Almacenar imágenes en WP7

Posted by Williams Rodriguez on September 11, 2011 in Isolated Storage

En este post hablaremos sobre la forma de leer y almacenar imágenes dentro y desde el Isolated Storage de Windows Phone 7.

Para empezar creamos un proyecto en WP7 y le agregamos una imagen llamada “logo.jog” con el build action en “Content”.

Williams_Rodriguez_Isolated Storage_Conten

Seguido incluimos los siguientes nombres de espacio en la pagina MainPage.xaml.cs (alternativamente puedes utilizarlos en cualquier otra pagina).

 

  1. using System.IO.IsolatedStorage;
  2. using System.Windows.Media.Imaging;
  3. using System.IO;
  4. using System.Windows.Resources;
  5. using Microsoft.Xna.Framework.Media;
  6. using Microsoft.Phone.Tasks;

Nota: Microsoft.Xna.Framework.Media es necesario solo si quieres leer/guardar imágenes en el MediaLibrary.

Leer y guardar imágenes en el Isolated Storage es una tarea común en muchas aplicaciones WP7. En Windows Phone 7 también es posible guardar imágenes en el MediaLibrary.

Básicamente utilizamos la clase IsolatedStorageFileStream para leer, escribir y crear archivos en el Isolated Storage. Sin embargo la principal diferencia cuando hablamos acerca de imágenes es el uso de las clases BitmapImage y WritableBitmap.

Guardando imágenes en el Isolated Storage

En el siguiente ejemplo verificamos si el archivo existe y después salvamos la imagen en el Isolated Storage Encodeando el objeto WritableBitmap a JPEG stream.

 

  1. private void btnSave_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             // Create a filename for JPEG file in isolated storage.
  4.             String tempJPEG = "logo.jpg";
  5.  
  6.             // Create virtual store and file stream. Check for duplicate tempJPEG files.
  7.             using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
  8.             {
  9.                 if (myIsolatedStorage.FileExists(tempJPEG))
  10.                 {
  11.                     myIsolatedStorage.DeleteFile(tempJPEG);
  12.                 }
  13.  
  14.                 IsolatedStorageFileStream fileStream = myIsolatedStorage.CreateFile(tempJPEG);
  15.  
  16.                 StreamResourceInfo sri = null;
  17.                 Uri uri = new Uri(tempJPEG, UriKind.Relative);
  18.                 sri = Application.GetResourceStream(uri);
  19.  
  20.                 BitmapImage bitmap = new BitmapImage();
  21.                 bitmap.SetSource(sri.Stream);
  22.                 WriteableBitmap wb = new WriteableBitmap(bitmap);
  23.  
  24.                 // Encode WriteableBitmap object to a JPEG stream.
  25.                 Extensions.SaveJpeg(wb, fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
  26.  
  27.                 //wb.SaveJpeg(fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
  28.                 fileStream.Close();
  29.             }
  30.         }

Nota: Alternativamente podrias utilizar WritableBitmap para guardar una imagen: wb.SaveJpeg(fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);

Leer imágenes desde el IsolatedStorage

En este ejemplo abrimos una archivo de imagen existente en el Isolated Storage y leemos su contenido después su contenido es mostrado en un control Image.

  1. private void btnRead_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             BitmapImage bi = new BitmapImage();
  4.  
  5.             using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
  6.             {
  7.                 using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("logo.jpg", FileMode.Open, FileAccess.Read))
  8.                 {
  9.                     bi.SetSource(fileStream);
  10.                     this.img.Height = bi.PixelHeight;
  11.                     this.img.Width = bi.PixelWidth;
  12.                 }
  13.             }
  14.             this.img.Source = bi;
  15.         }

Nota: Cuando abrimos un archivo existente desde el Isolated Storage usamos FileMode.Open, cuando queremos leer un archivos usamos FileAccess.Read.

Nota: “img” es un ImageControl ubicado en el MainPage.xaml: <Image x:Name=”img” />

Guardando una imagen en el phone Media Library

Antes que nada tienes que tener agregada la referencia al Microsoft.XNA.Framework, para poder tener acceso al Media Library:

Williams_Rodriguez_Isolated Storage_XNA

 

En este ejemplo leeremos una imagen desde el Isolated Storage y salvamos el archivo JPEG a el Media Library de Windows Phone, finalmente mostramos el resultado en el PhotoChooserTask.

  1. private void btnMedia_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
  4.             {
  5.                 using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("logo.jpg", FileMode.Open, FileAccess.Read))
  6.                 {
  7.                     MediaLibrary mediaLibrary = new MediaLibrary();
  8.                     Picture pic = mediaLibrary.SavePicture("SavedLogo.jpg", fileStream);
  9.                     fileStream.Close();
  10.                 }
  11.             }
  12.  
  13.             PhotoChooserTask photoChooserTask = new PhotoChooserTask();
  14.             photoChooserTask.Show();
  15.         }

 

Finalmente aquí los resultados:

Williams_Rodriguez_IsolatedStorage_MediaLibrary

Código Fuente

Saludo…

Tags: , , ,

 
0

Leer y guardar archivos XML usando XmlWriter

Posted by Williams Rodriguez on September 8, 2011 in Uncategorized

Ahora escribiremos acerca de como leer y guardar archivos en el Isolated Storage usando XmlWriter.

Partimos del hecho de que ya tenemos creada un proyecto para una aplicación en Windows Phone 7, seguido incluimos los siguientes nombres de espacio en el MainPage.xaml.cs (aun que definitivamente puedes utilizar este código en cualquier otra pagina).

  1. using System.Xml;
  2. using System.IO.IsolatedStorage;
  3. using System.IO;

 

Leer y guardar archivos XML en el Isolated Storage es una tarea común para muchas aplicaciones WP7. En el Post anterior vimos como leer/guardar archivos XML usando XmlSerializer. En este post nos centraremos en ver como hacer esto usando XmlWriter.

Nota: Cuando trabajamos con archivos siempre usamos “Using” ya que nos provee de una conveniente sintaxis que asegura el uso correcto de IDisposable.

Guardar un nuevo archivo XML usando XmlWriter

En este ejemplo primero creamos un archivo llamado People2.xml en el Isolated Storage y después escribimos datos en el.

  1. private void btnSaveWithoutSerielizer_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
  4.             {
  5.                 using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("People2.xml", FileMode.Create, myIsolatedStorage))
  6.                 {
  7.                     XmlWriterSettings settings = new XmlWriterSettings();
  8.                     settings.Indent = true;
  9.                     using (XmlWriter writer = XmlWriter.Create(isoStream, settings))
  10.                     {
  11.  
  12.                         writer.WriteStartElement("p", "person", "urn:person");
  13.                         writer.WriteStartElement("FirstName", "");
  14.                         writer.WriteString("Kate");
  15.                         writer.WriteEndElement();
  16.                         writer.WriteStartElement("LastName", "");
  17.                         writer.WriteString("Brown");
  18.                         writer.WriteEndElement();
  19.                         writer.WriteStartElement("Age", "");
  20.                         writer.WriteString("25");
  21.                         writer.WriteEndElement();
  22.                         // Ends the document
  23.                         writer.WriteEndDocument();
  24.                         // Write the XML to the file.
  25.                         writer.Flush();
  26.                     }
  27.                 }
  28.             }
  29.         }

 

Leer archivos XML usando StreamReader

En este ejemplo primero abrimos un archivo XML existente llamado People2.xml desde el Isolated Storage y leemos su contenido, después mostramos su contenido en un TextBlock:

  1. private void btnReadWithoutSerielizer_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             try
  4.             {
  5.                 using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
  6.                 {
  7.                     IsolatedStorageFileStream isoFileStream = myIsolatedStorage.OpenFile("People2.xml", FileMode.Open);
  8.                     using (StreamReader reader = new StreamReader(isoFileStream))
  9.                     {
  10.                         this.tbx.Text = reader.ReadToEnd();
  11.                     }
  12.                 }
  13.             }
  14.             catch
  15.             { }
  16.         }

 

Williams_Rodriguez_XmlWriter_Windows_Phone_7 Aquí el código…

Saludos…

Copyright © 2011-2012 Williams Rodriguez All rights reserved.
Desk Mess Mirrored version 1.9 theme from BuyNowShop.com.