天天看點

WIFI相關

WIFI相關的第一個我想講一下AccessPoint這個類

AccessPoint(接入點) 這個類是一個自己定義的類。用他來記錄一個WIFI接入點的資訊

一般有以下幾個字段

ssid:wifi的名稱。

security:安全 

rssi:算是wifi信号的強度值,他是一個小于等于0的數,數值越接近于0,信号強度越好。

signal:信号強度值:我們根據rssi轉換到這個值,用于顯示wifi信号格。

signal這個信号值通過WifiManager.calculateSignalLevel(rssiA,int level);這個方法來轉換成我們平常使用的WIFI信号.格。信号值為0-(level-1)

summary:顯示目前WIFI的狀态,例如,"已儲存","密碼錯誤","不在距離範圍内"等這些資訊.

這個類最好implements Comparable<Object> 對接入點進行排序。根據連接配接狀态,根據信号強度,根據SSID進行排序。

----------------------------------------------------

安全類型

1 無身份驗證(開放式)

2共享式(WEP)WEP 即 Wired Equivalent Privacy 的縮寫,表示有線等效保密。,容易遭到破解,于是WPA加密方式應運而生

3WPA  WPA2 -個人、WPA – 個人、WPA2 – 企業、WPA – 企業這四種安全類型都屬于 WPA,WPA2 是 WPA 的更新版 WPA 和 WPA2 都采用 TKIP 或者 AES 加密方式,比 WEP 的加密級别高,因而更安全。AES 加密方式時,密碼(網絡安全密鑰)可以設定 8~64 個字母、數字和英文标點符号的字元組合做為密碼)。一般密碼越長越安全。 而 TKIP(臨時密鑰完整性)協定,是 IEEE 802.11i 标準中的臨時過渡方案,一般不用。

之是以又分為個人版和企業版,是考慮到企業往往需要更高的安全級别,而個人則希望能有較高的安全級别但同時又不至于複雜到沒法用的地步。

  • 企業版需要有專用的伺服器來發放和驗證證書,不使用密碼;
  • 個人版則不需要專用的證書,可以使用預先設定的密碼(預共享密鑰,pre-shared key,縮寫 PSK)。是以很多地方又将 WPA – 個人或者 WPA2 – 個人稱為 WPA -PSK 和 WPA2 – PSK。

4 802.1X 企業版的 WPA,802.1X 也需要專門的認證伺服器來對 WiFi 連接配接進行認證。個人或者小型辦公室一般不用。

貼一些相關的方法,幫助大家解決問題

/**
	 * 擷取有config不為空的wifi加密方式
	 * @param config
	 * @return
	 */
	static int getSecurity(WifiConfiguration config) {
		if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) {
			return SECURITY_PSK;
		}
		if (config.allowedKeyManagement.get(KeyMgmt.WPA_EAP)
				|| config.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) {
			return SECURITY_EAP;
		}
		return (config.wepKeys[0] != null) ? SECURITY_WEP : SECURITY_NONE;
	}
	//這個加密方式與上一個的差別在于是擷取掃描擷取到的WIFI的加密方式
	private static int getSecurity(ScanResult result) {
		if (result.capabilities.contains("WEP")) {
			return SECURITY_WEP;
		} else if (result.capabilities.contains("PSK")) {
			return SECURITY_PSK;
		} else if (result.capabilities.contains("EAP")) {
			return SECURITY_EAP;
		}
		return SECURITY_NONE;
	}
           

下個部落格我會記錄下WIFI的其他相關類