1. 程式人生 > >android 獲取wifi開光狀態,連線狀態,訊號強度

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的資訊。