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"/>

Advertisement

Acerca de francho

Geek Maño. Artesano de software, programador Android en activo, sysop retirado. Linuxero de corazón, maquero recién convertido. Ocasionalmente: consultor de Internet, profesor... Más en francho.org

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

  1. Pingback: Bitacoras.com

Deja un comentario

Fill in your details below or click an icon to log in:

Gravatar
Logo de WordPress.com

Please log in to WordPress.com to post a comment to your blog.

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 453 seguidores