RSSI 小知識(shí):
- 全稱(chēng): Received Signal Strength Indication.
- 含義: 接收的信號(hào)強(qiáng)度指示售睹,無(wú)線(xiàn)發(fā)送層的可選部分,用來(lái)判定鏈接質(zhì)量,以及是否增大廣播發(fā)送強(qiáng)度萝风。
- WIFI RSSI, 開(kāi)發(fā)中單純表示信號(hào)強(qiáng)度. WIFI 列表排序中, 其也會(huì)占一席之地.
- WIFI 中的 RSSI, 官方文檔中定義了兩個(gè)值, 分別是: MIN_RSSI = -100, MAX_RSSI = -55;
WIFI RSSI 小知識(shí):
- private static final int MIN_RSSI = -100. 表示最弱程度的WIFI信號(hào)強(qiáng)度.
- private static final int MAX_RSSI = -55. 表示最強(qiáng)程度的WIFI信號(hào)強(qiáng)度.
- 當(dāng)前WiFi很弱的情況, 如果當(dāng)前獲取的WiFi-ap的rssi的值比此值還要小, 或者相等, 那么當(dāng)前可以顯示0等級(jí);
- 當(dāng)前WiFi很強(qiáng)的情況, 如果當(dāng)前獲取的WiFi-ap的rssi的值比此值還要大, 或者相等, 那么當(dāng)前可以顯示最高等級(jí);
根據(jù) RSSI 計(jì)算 WIFI 等級(jí):
Android 開(kāi)發(fā)中, 獲取到當(dāng)前WiFi熱點(diǎn)后, 可獲取到當(dāng)前WiFi-ap的rssi值; 根據(jù)官方介紹, rssi值在上層應(yīng)用只需要做等級(jí)計(jì)算劃分處理便可.
WIFI 更新 RSSI 的廣播ACTION:
public static final String RSSI_CHANGED_ACTION = "android.net.wifi.RSSI_CHANGED";
- 計(jì)算 WIFI 等級(jí):
// 獲取 WIFI 等級(jí), levelMax 為你想取得的最高等級(jí), 大于0, 通常人會(huì)使用3, 4, 5.
public static int getWifiLevelByRssi(WifiManager manager, int rssi, int levelMax) {
if (levelMax <= 0) {
throw new IlleagalArgumentException("param levelMax must much more then 0");
}
if (manager == null) {
throw new IlleagalArgumentException("param levelMax must not be null);
}
return manager.calculateSignalLevel(rssi, levelMax);
}
- 舉例: 你想劃分5個(gè)等級(jí):
如果, 當(dāng)前WiFi-ap的rssi是<=-100, 那么, 計(jì)算后, 返回0;
如果, 當(dāng)前WiFi-ap的rssi是>=-55, 那么, 計(jì)算后, 返回4;
其他的范圍, 按照: (rssi-(-100))*4/(-55-(-100)), 也就是: 4*(rssi+100)/45.