Anda di halaman 1dari 8

ACTIVIDAD #9 USO DE LA CMARA CON WINDOWS PHONE Introduccin

Silverlight para Windows Phone incluye varias herramientas de fcil uso para la cmara y el uso de fotos. Aqu vamos a mostrar cmo tomar y guardar fotos con la cmara de Windows Phone y seleccionar y mostrar fotos de la galera interna de Windows Phone. Esta prctica se divide en las siguientes secciones: Creando una interfaz de usuario para la cmara y visualizacin de fotos. Tomando, seleccionando y visualizando imgenes. Guardando imgenes en la Biblioteca de Imgenes.

Actividades
1. Creando una interfaz de usuario para la cmara y visualizacin de Fotos. Inicia Visual Studio y comienza un proyecto de tipo "Silverlight para Windows Phone". A continuacin, crea una interfaz de usuario (UI) que tiene los siguientes elementos: Dos campos TextBlock - uno con un nombre significativo que mostrar los mensajes de estado y una etiqueta TextBlock que dice simplemente: "Desconecte el telfono del software de Zune para ejecutar". Un Image con un nombre significativo que tendr su fuente dinmicamente actualizada para reflejar la nueva imagen que fue tomada o elegida. Tres botones con nombres significativos que se utilizarn para tomar una nueva foto, mostrar una foto existente, y guardaren el almacenamiento del telfono la foto mostrada. En este artculo, estos botones se llaman takePhotoButton , choosePhotoButton y savePhotoButton , respectivamente. 2. Tomando, Seleccionando y Visualizando imgenes En el Explorador de soluciones, abre el archivo MainPage.xaml.cs, y agrega las referencias por defecto en su lugar. Esto le da acceso a tu cdigo a los espacios de nombres necesarios para abrir la aplicacin de la cmara en el telfono y tomar una imagen, usar un objeto de mapa de bits de reescritura para almacenar los datos de la imagen temporal, usar un stream de memoria para convertir la imagen en un archivo, guardar la imagen en el almacenamiento interno del Jairo Arturo Contreras Villagrana Ing. en Software Facultad de Telemtica Programacin de Dispositivos Mviles

ACTIVIDAD #9 USO DE LA CMARA CON WINDOWS PHONE


telfono, y mover una imagen del almacenamiento aislado del telfono a la biblioteca multimedia del telfono, respectivamente. La seleccin de fotos y el uso de la cmara requerirn la coordinacin entre algunos mtodos, as que vamos a aadir algunos miembros de datos a la clase principal. Dos de ellos sern objetos Selectores, que permiten a las aplicaciones ceder el control a la funcionalidad integrada en el sistema operativo del telfono a fin de facilitar las cosas como la eleccin de un contacto de una lista, tomar una foto, o seleccionar una foto de la galera de fotos del telfono. Otro ser una imagen de mapa de bits que se estar utilizando para almacenar la informacin de la imagen temporal, es decir, imgenes que hemos elegido ya sea desde la galera en el telfono o simplemente tomadas con la cmara. CameraCaptureTask y PhotoChooserTask van a necesitar conectar los manejadores de eventos que se disparan cuando se toma una fotografa o cuando se elige de la biblioteca de imgenes del telfono, respectivamente. Esto significa que los dos eventos deben ser manejados: 1. Evento Completed de cameraCaptureTask . 2. Evento Completed de photoChooserTask . Este tutorial tiene una peculiaridad: porque en ambos casos slo queremos mostrar la imagen en pantalla, y porque los eventos Completed envan el mismo tipo de objeto a sus manejadores (un PhotoResult), usaremos un mtodo para manejar ambos eventos. Vamos a llamar a este mtodo photoCaptureOrSelectionCompleted , y obtendr la foto que ha sido tomada por la cmara o seleccionada de la biblioteca de imgenes , y la mostrar en la pantalla . La conexin de ambos eventos Completed para este nuevo mtodo se realiza en la funcin de inicio de la pgina, MainPage , Anteriormente, cuando creamos la interfaz de usuario, agregamos un Image llamado myImage en la pantalla, pero no estableci su propiedad Source, dejndola en blanco. En photoCaptureOrSelectionCompleted, sabemos que el usuario ha tomado o seleccionado una imagen as que es momento de establecer la propiedad Source de myImage a esa imagen, despus escalar la imagen de modo que quepa la zona de visualizacin de myImage. Tambin actualizaremos el TextBlock statusText si es necesario. Por ltimo, vamos a activar el botn que permite al usuario guardar la imagen mostrada. La propiedad Stretch del objeto Image determina cmo la imagen ser escalada para ajustarla a las dimensiones de myImage; utilizaremos Stretch.Uniform para preservar la relacin de aspecto de la imagen original. Jairo Arturo Contreras Villagrana Ing. en Software Facultad de Telemtica Programacin de Dispositivos Mviles

ACTIVIDAD #9 USO DE LA CMARA CON WINDOWS PHONE


As que podemos reservar la opcin de guardar esta imagen si el usuario lo desea, utilizando el mapa de bits que hemos creado antes, llamado bmp , para recibir los datos de esta nueva imagen , entonces lo asignaremos a la propiedad Source de myImage de modo que se muestre en la pantalla. (En otro mtodo que implementaremos despus, el contenido de bmp se puede guardar en el almacenamiento interno del telfono).

IMPLEMENTACION DEL PROGRAMA


using using using using using using using using using using using using using using using using using System; System.Collections.Generic; System.Linq; System.Net; System.Windows; System.Windows.Controls; System.Windows.Documents; System.Windows.Input; System.Windows.Media; System.Windows.Media.Animation; System.Windows.Shapes; Microsoft.Phone.Controls; Microsoft.Phone.Tasks; System.Windows.Media.Imaging; System.IO; System.IO.IsolatedStorage; Microsoft.Xna.Framework.Media;

namespace Actividad9 { public partial class MainPage : PhoneApplicationPage { CameraCaptureTask cameraCaptureTask; PhotoChooserTask photoChooserTask; BitmapImage bmp; // Constructor public MainPage() { InitializeComponent(); cameraCaptureTask = new CameraCaptureTask(); cameraCaptureTask.Completed += new EventHandler<PhotoResult>(photoCaptureOrSelectionCompleted); photoChooserTask = new PhotoChooserTask(); photoChooserTask.Completed += new EventHandler<PhotoResult>(photoCaptureOrSelectionCompleted); } void photoCaptureOrSelectionCompleted(object sender, PhotoResult e) { if (e.TaskResult == TaskResult.OK) { bmp = new BitmapImage();

Jairo Arturo Contreras Villagrana Ing. en Software Facultad de Telemtica Programacin de Dispositivos Mviles

ACTIVIDAD #9 USO DE LA CMARA CON WINDOWS PHONE


bmp.SetSource(e.ChosenPhoto); image1.Source = bmp; image1.Stretch = Stretch.Uniform; // Intercambiolos button3.IsEnabled textBlock2.Text = } else { button3.IsEnabled textBlock2.Text = +e.TaskResult.ToString(); } } estados de los elementos en laIU = true; "";

= false; "Task Result Error: "

private void button1_Click(object sender, RoutedEventArgs e) { cameraCaptureTask.Show(); } private void button2_Click(object sender, RoutedEventArgs e) { photoChooserTask.Show(); } private void button3_Click(object sender, RoutedEventArgs e) { { try { // Crea un nombre de archivo para el archivo JPEG en el almacenamiento aislado. String tempJPEG = "TempJPEG"; // Crea el almacenamiento virtual y el stream del archivo. Compruebe, si hay archivos duplicados tempJPEG. var myStore =IsolatedStorageFile.GetUserStoreForApplication(); if (myStore.FileExists(tempJPEG)) { myStore.DeleteFile(tempJPEG); } IsolatedStorageFileStream myFileStream =myStore.CreateFile(tempJPEG); // Se crea un stream del archivo JPEG. // En lugar de MyQuickApp en la URI, utilice elnombre de proyecto correcto. // El uso de TempJPEG se estableci anteriormente. Uri uri = new Uri("MyQuickApp;component/TempJPEG.jpg", UriKind.Relative); // Crear un nuevo objeto WriteableBitmap y estableceel stream de JPEG. WriteableBitmap wb = new WriteableBitmap(bmp);

Jairo Arturo Contreras Villagrana Ing. en Software Facultad de Telemtica Programacin de Dispositivos Mviles

ACTIVIDAD #9 USO DE LA CMARA CON WINDOWS PHONE

// Codifica un objetoWriteableBitmap a un stream JPEG. // SaveJpeg (mapade bits WriteableBitmap, targetStream Stream, targetWidth int, // targetHeight int, int orientacin, la calidad int)Extensions.SaveJpeg(wb,myFileStream, wb.PixelWidth, wb.PixelHeight, 0, 85); myFileStream.Close(); // Se crea un nuevo stream en el almacenamiento aislado, yguarda el archivo JPEG // en la biblioteca de medios de Windows Phone. myFileStream = myStore.OpenFile(tempJPEG,FileMode.Open, FileAccess.Read); MediaLibrary library = new MediaLibrary(); Picture pic =library.SavePicture("SavedPicture.jpg", myFileStream); myFileStream.Close(); button3.IsEnabled = false; textBlock2.Text = "Saved!"; } catch (Exception myError) { textBlock2.Text = myError.Message; } } } } }

RESULTADOS

Jairo Arturo Contreras Villagrana Ing. en Software Facultad de Telemtica Programacin de Dispositivos Mviles

ACTIVIDAD #9 USO DE LA CMARA CON WINDOWS PHONE

Jairo Arturo Contreras Villagrana Ing. en Software Facultad de Telemtica Programacin de Dispositivos Mviles

ACTIVIDAD #9 USO DE LA CMARA CON WINDOWS PHONE

Jairo Arturo Contreras Villagrana Ing. en Software Facultad de Telemtica Programacin de Dispositivos Mviles

ACTIVIDAD #9 USO DE LA CMARA CON WINDOWS PHONE

CONCLUSIONES

Mediante esta prctica, est programada para realizar las funciones de una aplicacin utilizando la cmara fotogrfica que incluye el dispositivo mvil y en su defecto el emulador. En algunas ocasiones hay actualizaciones de las APIs y en una parte del cdigo se tuvo que introducir manualmente. Y por ende la parte de guardar la imagen en el dispositivo emulado, no se pudo realizar.

Jairo Arturo Contreras Villagrana Ing. en Software Facultad de Telemtica Programacin de Dispositivos Mviles

Anda mungkin juga menyukai