Introdução     No desenvolvimento de aplicações para dispositivos móveis é muito comum realizar operações que necessitem  ...
171819Criamos um botão e referenciamos seu evento Click ao método btnVerificarConexao_Click, o que pode ser feitodando doi...
Figura 1: Primeiro exemplo e execuçãoNo próximo exemplo vamos inserir um TextBlock para exibir uma mensagem constantemente...
14         <TextBlock Name="lblConexao"Text="Conexão com a internet"VerticalAlignment="15     </Grid>   </Grid>161718Dessa...
Figura 2: Segundo exemplo em execuçãoConclusãoEm geral a base para verificar a conexão está no método GetIsNetworkAvailabl...
Upcoming SlideShare
Loading in …5
×

Windows Phone: Verificando a conexão com a internet

572 views

Published on

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.

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

  • Be the first to like this

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

No notes for slide

Windows Phone: Verificando a conexão com a internet

  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 webservice 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 webservice (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 webservice. É 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="{StaticRe 9 <TextBlock x:Name="PageTitle"Text="Conexão"Margin="9,-7,0,0"Style="{StaticRe 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"VerticalAlignme 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 codebehind, 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 aonamespaceSystem.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="{StaticRe9 <TextBlock x:Name="PageTitle"Text="Conexão"Margin="9,-7,0,0"Style="{StaticRe10 </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> </Grid>161718Dessa 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 += newNetworkAddressChangedEventHandler( }1112 void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)13 {14 internetConectada = NetworkInterface.GetIsNetworkAvailable();15 if(internetConectada)16 { lblConexao.Foreground = newSolidColorBrush(Colors.Green);17 lblConexao.Text = "Conectado à Internet";18 }19 else20 { lblConexao.Foreground = newSolidColorBrush(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.

×