Truco Android: acceder a los datos de la red wifi y telefonía

En algunos casos puede ser interesante conocer datos de la red que está usando. Las clases TelephonyManager y WifiManager nos facilitan conocer esta información.

El siguiente código hace uso de ellas para averiguar si la wifi está activada (y sus datos) así como información sobre la red telefónica que esta usando como el operador (MCC/MNC, nombre y país) o tipo de red.

También configura un botón que abre la configuración wifi del sistema.

package org.francho.test.network;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class NetworkTest extends Activity {
	private TextView tInfo;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// Al pulsar el boton lanzamos la configuración de wifi
		Button configWifi = (Button) findViewById(R.id.botonConfigWifi);
		configWifi.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent i = new Intent(Settings.ACTION_WIFI_SETTINGS);
				startActivity(i);
			}
		});

		// Campo de texto donde mostraremos la info
		tInfo = (TextView) findViewById(R.id.textoInfo);
	}

	@Override
	public void onStart() {
		super.onStart();

		String info = "Wifi"+ "\n";

		// Comprobamos si la wifi está activada o no
		WifiManager wifiMan = (WifiManager) getSystemService(Context.WIFI_SERVICE);

		if (wifiMan.isWifiEnabled()) {
			info +="\t" + "Estado: activa "+"\n";

			WifiInfo wifi = wifiMan.getConnectionInfo();
			info +="\t" + wifi.toString().replace(", ", "\n\t");
		} else {
			info +="\t" + "Estado: inactiva"+ "\n";
		}

		// Averiguamos datos de la red telefónica
		TelephonyManager tlfMan = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

		info +="\n" + "Telefonía: " + "\n";
		info +="\t" + "Operador (MCC+MNC): " + tlfMan.getNetworkOperator() + "\n";
		info +="\t" + "Nombre Operador: " + tlfMan.getNetworkOperatorName() + "\n";
		info +="\t" + "Nº País: " + tlfMan.getNetworkCountryIso() + "\n";

		switch (tlfMan.getNetworkType()) {
		case TelephonyManager.NETWORK_TYPE_GPRS:
			info +="\t" + "Tipo red: GPRS" + "\n";
			break;
		case TelephonyManager.NETWORK_TYPE_HSDPA:
			info +="\t" + "Tipo red: HSDPA" + "\n";
			break;
		case TelephonyManager.NETWORK_TYPE_HSPA:
			info +="\t" + "Tipo red: HSPA" + "\n";
			break;
		case TelephonyManager.NETWORK_TYPE_UMTS:
			info +="\t" + "Tipo red: UMTS" + "\n";
			break;
		case TelephonyManager.NETWORK_TYPE_UNKNOWN:
			info +="\t" + "Tipo red: desconocida " + "\n";
			break;
		default:
			info +="\t" + "Tipo red: otra (" + tlfMan.getNetworkType() +  ")\n";
		}
		tInfo.setText(info);
	}
}

Para que este código funcione deberemos declarar los siguientes permisos en el AndroidManifest

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

Acerca de francho

Maño, unutopico, geek, artesano de software, aprendiz ágil, programador Android en activo, sysop retirado, linuxero de corazón, papá a tiempo completo... Más en francho.org/about

Publicado el 21 noviembre, 2010 en General. Añade a favoritos el enlace permanente. 1 comentario.

  1. Pingback: Bitacoras.com

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 780 seguidores

%d bloggers like this: