Verificando a conexão com a internet no Windows Phone

304 visualizações

Publicada em

Veja neste artigo com verificar o estado da conexão com a internet (ativa/inativa) a partir de aplicações Silverlight para Windows Phone. O código apresentado é válido tanto para a versão do SDK 7.1 quanto para a 8.0.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
304
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Verificando a conexão com a internet no Windows Phone

  1. 1. Introdução No desenvolvimento de aplicações para dispositivos móveis é muito comum realizar operações que necessitem de uma conexão ativa com a internet. Por exemplo, pode-se precisar conectar a um web service para obter e enviar dados, ou transferir arquivos de/para um servidor FTP. Geralmente esse tipo de operação demora um pouco, dependendo da quantidade de dados a trafegar e de velocidade da conexão. Às vezes ocorre ainda de o aparelho não estar conectado à internet e o processo ter de ser interrompido. Quando essa situação é prevista pelo desenvolvedor, alguns problemas podem ser evitados, caso contrário, informações podem ser perdidas e/ou modificadas indevidamente devido ao processo de transferência de dados através da internet ter sido interrompido por falta de conexão. Este rápido comentário já nos permite perceber a importância de a aplicação ter conhecimento de quando há ou não conexão com a internet no momento da realização de certas operações. Para deixar um pouco mais claro, tomemos um exemplo hipotético onde temos o seguinte cenário: Uma aplicação de vendas mantém os dados armazenados no banco de dados local e fornece uma funcionalidade de “Enviar Dados”, onde o usuário transfere os dados locais para um web service (por exemplo, para ser lido pela empresa em uma aplicação desktop). Esse procedimento de envio de dados pode ser descrito a partir da seguinte sequência de passos.1. Ler os dados do banco local e criar um arquivo XML para envio;2. Apagar os dados locais para poupar espaço de armazenamento, uma vez que as informações estarão seguras no servidor que as receberá.3. Enviar o arquivo para um web service. É fácil perceber que se não houver conexão com a internet no momento do envio, os dados já terão sido excluídos da base local. Na melhor das hipóteses, será necessário ler os arquivos criados e armazenar novamente os dados. Se a falta de conexão fosse verificada antes de o processo ser iniciado, a perda dos dados da base local (ou no mínimo o “retrabalho” de ter de regravar as informações após excluí-las) poderia ser evitada. Exemplos práticos A seguir veremos dois exemplos de verificação do status da conexão. O primeiro mostra a forma mais básica, uma verificação “pontual”, onde o estado da conexão é avaliado apenas uma vez. No segundo exemplo, usamos um evento que é disparado sempre que a conexão é ativada/desativada, para manter uma mensagem atualizada na tela. Então podemos criar uma aplicação para Windows Phone no Visual Studio (o código apresentado aqui é válido tanto para o SDK 7.1 quanto para o 8.0) e na página MainPage.xaml, alterar o conteúdo do Grid LayoutRoot conforme a Listagem 1. Listagem 1: Grid LayoutRoot no primeiro exemplo 1 <!--LayoutRoot is the root grid where all page content is placed--> 2 <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> 3 <RowDefinition Height="Auto"/> 4 <RowDefinition Height="*"/> 5 </Grid.RowDefinitions> 6 7 <!--TitlePanel contains the name of the application and page title--> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> 8 <TextBlock x:Name="ApplicationTitle" Text="Verificar conexão" Style="{StaticR 9 <TextBlock x:Name="PageTitle" Text="Conexão" Margin="9,-7,0,0" Style="{Static 10 </StackPanel> 11 12 <!--ContentPanel - place additional content here--> 13 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Name="btnVerificarConexao" Content="Verificar Conexão" VerticalAlignm 14/> 15 </Grid> 16</Grid>
  2. 2. 171819Criamos um botão e referenciamos seu evento Click ao método btnVerificarConexao_Click, o que pode ser feitodando dois cliques sobre ele. No code behind, ou seja, no arquivo MainPage.xaml.cs esse método já deve tersido criado e então podemos utilizar o código visto na Listagem 2.Listagem 2: Verificando a conexão ao clicar no botão12 private void btnVerificarConexao_Click(object sender, RoutedEventArgs e)3 { if (NetworkInterface.GetIsNetworkAvailable())4 {5 MessageBox.Show("A conexão com a internet está ATIVA!");6 }7 else {8 MessageBox.Show("A conexão com a internet está INATIVA!");9 }10}11Observação: Para utilizar a classe NetworkInterface é necessária incluir a referência ao namespaceSystem.Net.NetworkInformation na seção de usings da página.Ao executar a aplicação temos o seguinte resultado:
  3. 3. Figura 1: Primeiro exemplo e execuçãoNo próximo exemplo vamos inserir um TextBlock para exibir uma mensagem constantemente na tela indicandose a conexão está ativa ou não. Então vamos alterar o conteúdo do Grid LayoutRoot conforme a listagemabaixo.Listagem 3: Grid LayoutRoot para o segundo exemplo1 <!--LayoutRoot is the root grid where all page content is placed-->2 <Grid x:Name="LayoutRoot" Background="Transparent">3 <Grid.RowDefinitions> <RowDefinition Height="Auto"/>4 <RowDefinition Height="*"/>5 </Grid.RowDefinitions>67 <!--TitlePanel contains the name of the application and page title-->8 <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="Verificar conexão" Style="{StaticR9 <TextBlock x:Name="PageTitle" Text="Conexão" Margin="9,-7,0,0" Style="{Static10 </StackPanel>1112 <!--ContentPanel - place additional content here-->13 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  4. 4. 14 <TextBlock Name="lblConexao" Text="Conexão com a internet" VerticalAlignment=15 /> </Grid>16</Grid>1718Dessa vez declararemos uma variável privada para armazenar o status da conexão que será atualizadoconstantemente no evento NetworkAddressChanged da classe NetworkChange. Esse evento é disparadosempre que o IP da interface de rede sofre alteração.Novamente utilizaremos o método GetIsNetworkAvailable da classe NetworkInterface, conforme vemos nocódigo C# da página MainPage, a seguir.Listagem 4: Código da página MainPage para o segundo exemplo123 public partial class MainPage : PhoneApplicationPage4 { private bool internetConectada;56 // Constructor7 public MainPage()8 {9 InitializeComponent();10 NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler }1112 void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)13 {14 internetConectada = NetworkInterface.GetIsNetworkAvailable();15 if (internetConectada)16 { lblConexao.Foreground = new SolidColorBrush(Colors.Green);17 lblConexao.Text = "Conectado à Internet";18 }19 else20 { lblConexao.Foreground = new SolidColorBrush(Colors.Red);21 lblConexao.Text = "Sem Conexão com a Internet";22 }23 }24}2526Como se pode ver, a variável internetConectada pode ser acessada em qualquer ponto da classe, servindo paraos fins já comentados nesse artigo.O resultado desse código, ao executarmos a aplicação, é apresentado a seguir.
  5. 5. Figura 2: Segundo exemplo em execuçãoConclusãoEm geral a base para verificar a conexão está no método GetIsNetworkAvailable, como vimos nos códigosacima. Cabe ao leitor decidir qual é o melhor ponto e momento para utilizar esse recurso.Até o próximo artigo.

×