Utilizando o Isolated Storage no Windows Phone

Veja neste artigo como utilizar o Isolated Storage File e manipular arquivos no Windows Phone. Será desenvolvido um exemplo onde se seleciona uma foto na coleção e para gravá-la no armazenamento local da aplicação.

Existem oito métodos principais na classe IsolatedStorageFile que os desenvolvedores utilizarão para manipular arquivos e diretórios no Windows Phone.

Agora será feito um exemplo em que o usuário irá escolher uma imagem através do PhotoChooserTask e esta será salva no Isolated Storage.

Crie um projeto Windows Phone Application no Visual Studio 2012.


Figura 1: Criação do projeto para Windows Phone no Visual Studio

Ao criar o projeto é exibida uma caixa com a opção de escolha da versão do Windows Phone, escolha a 7.1, pois assim o seu aplicativo funcionará em todas as versões de Windows Phone disponíveis.

Abra o arquivo MainPage.xaml e adicione o controle Image no Content Panel conforme a listagem 1.

Listagem 1: Criação do controle Image no Content Panel

<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Image VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="10,10,0,0" Name="imgExemplo" Stretch="Uniform" /> </Grid>

Adicione um ícone ao Solution Explorer clicando com o botão direito do mouse e depois Add Existing Item, navegue para “C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Icons\dark.

Selecione e adicione os arquivos appbar.delete.rest.png e appbar.feature.camera.rest.png .

Vá novamente ao Solution Explorer e selecione ambos os ícones para abrir a propriedade.

Defina a Build Action e Copy to Output Directory para Content e Copy if newer, respectivamente.

No arquivo MainPage.xaml adicione a application bar abaixo do grid layoutroot como mostra a listagem 2.

Listagem 2: Criação da application bar com as opções de câmera e excluir

<phone:PhoneApplicationPage.ApplicationBar> <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True"> <shell:ApplicationBarIconButton IconUri="appbar.feature.camera.rest.png" Text="camêra" Click="ApplicationBarIconButton_Click_1"/> <shell:ApplicationBarIconButton IconUri="appbar.delete.rest.png" Text="excluir" Click="ApplicationBarIconButton_Click_2"/> </shell:ApplicationBar> </phone:PhoneApplicationPage.ApplicationBar>

Figura 2: Imagem de como deverá estar o aplicativo

Agora abra o arquivo MainPage.xaml.cs e adicione no topo da página as referências usadas, conforme a listagem 3.

Listagem 3: Referências usadas na MainPage.xaml.cs

using Microsoft.Phone.Tasks; using System.IO.IsolatedStorage; using System.Windows.Media.Imaging; using System.IO;

Para escolher a foto, será usado o Task PhotoChooser, declare no topo da classe um objeto chamado chooser do tipo PhotoChooser, e instancie esse objeto no construtor da classe, conforme a listagem 4.

Listagem 4: Classe MainPage.xaml.cs

PhotoChooserTask chooser; // Constructor public MainPage() { InitializeComponent(); chooser = new PhotoChooserTask(); chooser.Completed += chooser_Completed; }

Adicione agora o método para tratar a imagem após ser escolhida e outro método para salvar a foto no Isolated Storage File, conforme a listagem 5.

Listagem 5: Classe MainPage.xaml.cs

void chooser_Completed(object sender, PhotoResult e) { if (e.TaskResult == TaskResult.OK) { BitmapImage img = new BitmapImage(); img.SetSource(e.ChosenPhoto); SalvarFoto(img); ExibirFoto(); } } private void SalvarFoto(BitmapImage img) { using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication()) { WriteableBitmap bmp = new WriteableBitmap(img); if (!iso.DirectoryExists("Imagens")) { iso.CreateDirectory("Imagens"); } using (IsolatedStorageFileStream stream = iso.OpenFile(@"Imagens\foto.jpg", FileMode.OpenOrCreate)) { Extensions.SaveJpeg(bmp, stream, bmp.PixelWidth, bmp.PixelHeight, 0, 100); } } }

E então será criado também um método que exibe a foto. Sobrescreva o método onNavigatedTo colocando esse método de exibição da foto, conforme a listagem 6.

Listagem 6: Classe MainPage.xaml.cs

private void ExibirFoto() { BitmapImage img = null; using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication()) { if (iso.FileExists(@"Imagens\foto.jpg")) { using (IsolatedStorageFileStream stream = iso.OpenFile(@"Imagens\foto.jpg", FileMode.Open)) { img = new BitmapImage(); img.SetSource(stream); } } } imgExemplo.Source = img; } protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); ExibirFoto(); }

O evento ApplicationBarIconButton_Click_1 exibirá a opção de escolha da foto, já o ApplicationBarIconButton_Click_2 será implementado para excluir a foto do Isolated Storage File, conforme a listagem 7.

Listagem 7: Classe MainPage.xaml.cs

private void ApplicationBarIconButton_Click_1(object sender, EventArgs e) { chooser.Show(); } private void ApplicationBarIconButton_Click_2(object sender, EventArgs e) { using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication()) { iso.Remove(); } ExibirFoto(); }

Por fim, pressione F5 e teste a aplicação, ela deverá estar conforme a figura 3, exibindo a galeria de imagens para escolha da imagem e salvá-la no aplicativo.


Figura 3: Aplicação em funcionamento com imagem anexada

Assim concluímos mais este artigo. Até a próxima.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados