今日は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);