sexta-feira, 25 de julho de 2014

Android - Verificar se o dispositivo está conectado com a Internet


Em praticamente toda aplicação desenvolvida para o sistema Android necessitamos do acesso da internet. Nesta dica rápida iremos montar uma função para verificar se o dispositivo está conectado com algum tipo de conexão de internet, sendo a 3 G ou Wi-fi.
Para isto inicie uma aplicação padrão e no arquivo “..res/layout/activity_main.xml” insira um botão conforme mostra a tela a seguir. Ver Imagem 01.
Figura 01: Lay-Out Sugerido.
Abaixo o XML correspondente:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="44dp"
        android:text="Testar Conexão!"
        android:onClick="Conectar"/>
</RelativeLayout>

Como estamos trabalhando com propriedades de conexão, deveremos adicionar no arquivo “Android.Manifest” algumas permissões de acesso, Segue abaixo para maiores detalhes.


<uses-permission android:name="android.permission.INTERNET"/>

Permissão de acesso a internet, não importando o tipo.

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Status da conexão Wi-Fi.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Status da conexão 3G.

Já em nossa atividade principal (“MainActivity.java”), no primeiro momento, devemos adicionar algumas bibliotecas necessárias.

import android.net.ConnectivityManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

A função será disparada no evento “Click” do botão.

public class MainActivity extends Activity {

       @Override
       protected void onCreate(Bundle savedInstanceState)
       {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
       }

       @Override
       public boolean onCreateOptionsMenu(Menu menu)
      {
             getMenuInflater().inflate(R.menu.main, menu);
             return true;
       }
      
       public void Conectar(View v)
       {
             Conectado(this);
       }
      
       public boolean Conectado(Context context)
       {
               try
               {
                   ConnectivityManager cm = (ConnectivityManager)
                   context.getSystemService(Context.CONNECTIVITY_SERVICE);
                
                   if (cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected())
                   {
                       MensagemToast("Conexão 3G: "+cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected(), MainActivity.this);
                    return true;
        
                   }
                   else if(cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected())
                   {
                       MensagemToast("Conexão Wi-fi: "+cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected(), MainActivity.this);
                    return true;
                }
                   else
                   {
                   MensagemToast("Status de conexão Wifi: "+cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected(), MainActivity.this);
                   MensagemToast("Status de conexão 3G: "+cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected(),MainActivity.this);
                       return false;
                   }
               }
               catch (Exception e)
               {
                       MensagemToast(e.getMessage(), MainActivity.this);
                       return false;
               }
           }
      
        public static void MensagemToast(String msg, Activity Atividade)
        {
              Toast.makeText(Atividade, msg, Toast.LENGTH_SHORT).show();
        
      
}
Esta função que irá nos retornar valores booleanos. Temos a possibilidade de testar conexão com Wi-Fi e 3G. Caso não encontre conexões também será disparado uma mensagem informativa.

Conclusão


Esta dica é para todos os programadores que usam a internet como um recurso em seus aplicativos desenvolvidos. Um Forte Abraço!

Nenhum comentário:

Postar um comentário