SlideShare ist ein Scribd-Unternehmen logo
1 von 5
Downloaden Sie, um offline zu lesen
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>
17
18
19

Criamos um botão e referenciamos seu evento Click ao método btnVerificarConexao_Click, o que pode ser feito
dando dois cliques sobre ele. No code behind, ou seja, no arquivo MainPage.xaml.cs esse método já deve ter
sido criado e então podemos utilizar o código visto na Listagem 2.


Listagem 2: Verificando a conexão ao clicar no botão


1
2 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}
11

Observação: Para utilizar a classe NetworkInterface é necessária incluir a referência ao namespace
System.Net.NetworkInformation na seção de usings da página.


Ao executar a aplicação temos o seguinte resultado:
Figura 1: Primeiro exemplo e execução


No próximo exemplo vamos inserir um TextBlock para exibir uma mensagem constantemente na tela indicando
se a conexão está ativa ou não. Então vamos alterar o conteúdo do Grid LayoutRoot conforme a listagem
abaixo.


Listagem 3: Grid LayoutRoot para o segundo exemplo


1 <!--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>
6
7     <!--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="{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">
14        <TextBlock Name="lblConexao" Text="Conexão com a internet" VerticalAlignment=
15 />
      </Grid>
16</Grid>
17
18

Dessa vez declararemos uma variável privada para armazenar o status da conexão que será atualizado
constantemente no evento NetworkAddressChanged da classe NetworkChange. Esse evento é disparado
sempre que o IP da interface de rede sofre alteração.


Novamente utilizaremos o método GetIsNetworkAvailable da classe NetworkInterface, conforme vemos no
código C# da página MainPage, a seguir.


Listagem 4: Código da página MainPage para o segundo exemplo


1
2
3 public partial class MainPage : PhoneApplicationPage
4 {
      private bool internetConectada;
5
6
      // Constructor
7     public MainPage()
8     {
9         InitializeComponent();
10        NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler
      }
11
12    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        else
20        {
               lblConexao.Foreground = new SolidColorBrush(Colors.Red);
21             lblConexao.Text = "Sem Conexão com a Internet";
22        }
23    }
24}
25
26

Como se pode ver, a variável internetConectada pode ser acessada em qualquer ponto da classe, servindo para
os fins já comentados nesse artigo.


O resultado desse código, ao executarmos a aplicação, é apresentado a seguir.
Figura 2: Segundo exemplo em execução


Conclusão
Em geral a base para verificar a conexão está no método GetIsNetworkAvailable, como vimos nos códigos
acima. Cabe ao leitor decidir qual é o melhor ponto e momento para utilizar esse recurso.


Até o próximo artigo.

Weitere ähnliche Inhalte

Ähnlich wie Verificando a conexão com a internet no Windows Phone

Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com AjaxAdler Medrado
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcJeison Barros
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - BrazilStephen Chin
 
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereCriando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereJuliano Martins
 
Windows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows AzureWindows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows AzureVitor Ciaramella
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosVitor Silva
 
Ajax O Objeto Xml Http Request Parte 1
Ajax   O Objeto Xml Http Request   Parte 1Ajax   O Objeto Xml Http Request   Parte 1
Ajax O Objeto Xml Http Request Parte 1infinitopublicidade
 
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...Andre Devecchi
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaBreno Vitorino
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasRodrigo Branas
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java IIIVerônica Veiga
 

Ähnlich wie Verificando a conexão com a internet no Windows Phone (20)

Artigoajax
ArtigoajaxArtigoajax
Artigoajax
 
Java e Cloud Computing
Java e Cloud ComputingJava e Cloud Computing
Java e Cloud Computing
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com Ajax
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - Brazil
 
Ajax como comecar
Ajax como comecarAjax como comecar
Ajax como comecar
 
Usando a data grid wpf
Usando a data grid wpfUsando a data grid wpf
Usando a data grid wpf
 
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereCriando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
 
Manual & auto integration rbs6000 lte
Manual & auto integration rbs6000 lteManual & auto integration rbs6000 lte
Manual & auto integration rbs6000 lte
 
Windows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows AzureWindows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows Azure
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Ajax O Objeto Xml Http Request Parte 1
Ajax   O Objeto Xml Http Request   Parte 1Ajax   O Objeto Xml Http Request   Parte 1
Ajax O Objeto Xml Http Request Parte 1
 
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e so...
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em Java
 
CURSO JAVA 01
CURSO JAVA 01CURSO JAVA 01
CURSO JAVA 01
 
Java com banco my sql
Java com banco my sqlJava com banco my sql
Java com banco my sql
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 

Verificando a conexão com a internet no Windows Phone

  • 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. 17 18 19 Criamos um botão e referenciamos seu evento Click ao método btnVerificarConexao_Click, o que pode ser feito dando dois cliques sobre ele. No code behind, ou seja, no arquivo MainPage.xaml.cs esse método já deve ter sido criado e então podemos utilizar o código visto na Listagem 2. Listagem 2: Verificando a conexão ao clicar no botão 1 2 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} 11 Observação: Para utilizar a classe NetworkInterface é necessária incluir a referência ao namespace System.Net.NetworkInformation na seção de usings da página. Ao executar a aplicação temos o seguinte resultado:
  • 3. Figura 1: Primeiro exemplo e execução No próximo exemplo vamos inserir um TextBlock para exibir uma mensagem constantemente na tela indicando se a conexão está ativa ou não. Então vamos alterar o conteúdo do Grid LayoutRoot conforme a listagem abaixo. Listagem 3: Grid LayoutRoot para o segundo exemplo 1 <!--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> 6 7 <!--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="{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">
  • 4. 14 <TextBlock Name="lblConexao" Text="Conexão com a internet" VerticalAlignment= 15 /> </Grid> 16</Grid> 17 18 Dessa vez declararemos uma variável privada para armazenar o status da conexão que será atualizado constantemente no evento NetworkAddressChanged da classe NetworkChange. Esse evento é disparado sempre que o IP da interface de rede sofre alteração. Novamente utilizaremos o método GetIsNetworkAvailable da classe NetworkInterface, conforme vemos no código C# da página MainPage, a seguir. Listagem 4: Código da página MainPage para o segundo exemplo 1 2 3 public partial class MainPage : PhoneApplicationPage 4 { private bool internetConectada; 5 6 // Constructor 7 public MainPage() 8 { 9 InitializeComponent(); 10 NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler } 11 12 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 else 20 { lblConexao.Foreground = new SolidColorBrush(Colors.Red); 21 lblConexao.Text = "Sem Conexão com a Internet"; 22 } 23 } 24} 25 26 Como se pode ver, a variável internetConectada pode ser acessada em qualquer ponto da classe, servindo para os fins já comentados nesse artigo. O resultado desse código, ao executarmos a aplicação, é apresentado a seguir.
  • 5. Figura 2: Segundo exemplo em execução Conclusão Em geral a base para verificar a conexão está no método GetIsNetworkAvailable, como vimos nos códigos acima. Cabe ao leitor decidir qual é o melhor ponto e momento para utilizar esse recurso. Até o próximo artigo.