Wifi格数与信号强度的关系
android中wifi分为5个等级,对应的图标是0格,1格,2格,3格,4格。
calculateSignalLevel为计算信号等级函数,MAX_RSSI和MIN_RSSI分别为最强和最弱信号强度等级的信号强度阀值
划分5个等级:
private static final int MIN_RSSI = -100,表示最弱程度的WIFI信号强度。
private static final int MAX_RSSI = -55,表示最强程度的WIFI信号强度。
当前rssi<=-100,返回0;当前rssi>=-55,返回4;
算法
if (rssi <= MIN_RSSI) return 0;
else if (rssi >= MAX_RSSI) return numLevels - 1;
partitionSize = (MAX_RSSI - MIN_RSSI) / (numLevels - 1);
level=(rssi - MIN_RSSI) / partitionSize;
按照(rssi-(-100))*4/(-55-(-100)),也就是level=4*(rssi+100)/45,得出当RSSI=-66.2dBm返回3,RSSI=-77.5dBm返回2,RSSI=-88.7dBm返回1
/frameworks/base/wifi/java/android/net/wifi/wifimanager.java
信号强度,根据wifimanager中的算法calculateSignalLevel可以算得:
0 rssi<=-100
1 (-100, -88]
2 (-88, -77]
3 (-66, -55]
4 rssi>=-55
测试1
四格,-63dBm
三格,-66dBm、-72dBm、-73dBm、-74dBm
二格,-77dBm、-78dBm、-79dBm、-80dBm、-82dBm
一格,-84dBm
测试2
四格,-51dBm、-62dBm、-63dBm,速度72Mbps