android 獲取wifi開光狀態,連線狀態,訊號強度
android提供了系統廣播
1、WifiManager.WIFI_STATE_CHANGED_ACTION 系統wifi開關廣播
2、WifiManager.NETWORK_STATE_CHANGED_ACTION wifi連線狀態廣播
1、wifi開關廣播
廣播傳來的intent傳遞了一個狀態值 int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_DISABLED);
有這麼幾種:
WifiManager.WIFI_STATE_DISABLED 系統關閉了wifi
WifiManager.WIFI_STATE_ENABLED 系統打開了wifi
wifiManager.WIFI_STATE_DISABLING
wifiManager.WIFI_STATE_ENABLING
2、wifi連線狀態廣播
廣播傳來的intent傳遞了一個NetworkInfo物件 NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
這個NetworkInfo 物件有幾種狀態值 int state=iinfo.getState();
NetworkInfo.State.DISCONNECTED wifi未連線上
NetworkInfo.State.CONNECTED) wifi連線上了
還有幾種這裡不列出
3、獲取wifi資訊
WifiManager wifiManager =(WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
wifiinfo.getBSSID();
wifiinfo.getSSID(); 連線的wifi名字
wifiinfo.getIpAddress();獲取IP地址。
wifiinfo.getMacAddress();獲取MAC地址。
wifiinfo.getNetworkId();獲取網路ID。
wifiinfo.getLinkSpeed();獲取連線速度,可以讓使用者獲知這一資訊。
wifiinfo.getRssi();獲取RSSI,RSSI就是接受訊號強度指示。
這裡得到訊號強度就靠wifiinfo.getRssi();這個方法。得到的值是一個0到-100的區間值,是一個int型資料,其中0到-50表示訊號最好,-50到-70表示訊號偏差,小於-70表示最差,有可能連線不上或者掉線,一般Wifi已斷則值為-200。
最後介紹下廣播註冊和接收
繼承BroadcastReceiver 即可接收到註冊過的廣播
1、接收
private class ChangeBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String strAction=intent.getAction();
...........
}
}
2、註冊
ChangeBroadcast broadcast== new
ChangeBroadcast ();
IntentFilter intentFilter = new IntentFilter((WifiManager.WIFI_STATE_CHANGED_ACTION);
intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); // wifi
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); // wifi
mActivity.registerReceiver(broadcast, intentFilter);
3、記住登出
mActivity.unregisterReceiver(broadcast);
ok,這樣基本可以實現系統是否打開了wifi,打開了wifi後是否連線上了wifi,連線上了可以獲得這個wifi的資訊。