WiFiの情報を取得する


今日はAndroidでWiFiの情報を取得する方法をご紹介します。
WifiInfoクラスを使うことで以下に示すようなWiFiの情報を取得することができます。

  • SSID
  • BSSID
  • IPアドレス
  • MACアドレス
  • ネットワークID
  • リンクスピード

具体的な実現方法については続きをご覧下さい。

コードは以下のようになります。

package org.jpn.techbooster.WiFiInfoSample;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;

public class WiFiInfoSample extends Activity {

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

    	WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
    	WifiInfo w_info = wifiManager.getConnectionInfo();
        Log.i("Sample", "SSID:"+w_info.getSSID());
        Log.i("Sample", "BSSID:"+w_info.getBSSID());
        Log.i("Sample", "IP Address:"+w_info.getIpAddress());
        Log.i("Sample", "Mac Address:"+w_info.getMacAddress());
        Log.i("Sample", "Network ID:"+w_info.getNetworkId());
        Log.i("Sample", "Link Speed:"+w_info.getLinkSpeed());
    }
}

WifiManagerのgetConnectionInfoメソッドを使ってWifiInfoのオブジェクトを作成します。
WifiInfoオブジェクトの各メソッドから、WiFiの各情報を取得することができます。
上の例ではログに取得情報を表示するようにしています。
以下がその実行結果になります。
(一部、伏せてある情報があります。ご了承ください。)

ちなみに、上の実行結果ではIPアドレスがおかしな値になっています。
getIpAddress()はint型でIPアドレスを返すので、以下のようなビット演算で
オクテット表記にする必要があります。

int ip_addr_i = w_info.getIpAddress();
String ip_addr = ((ip_addr_i >> 0) & 0xFF) + "." + ((ip_addr_i >> 8) & 0xFF) + "." + ((ip_addr_i >> 16) & 0xFF) + "." + ((ip_addr_i >> 24) & 0xFF);
Log.i("Sample", "IP Address:"+ip_addr);

2 Comments