¿Cuál es el rango de RSSI para el icono indicador de WiFi en la barra de notificaciones?
Respuesta
¿Demasiados anuncios?No he mirado versiones anteriores, pero aquí hay información precisa a partir de Android 7.1.2.
El código que realiza la transformación de RSSI a "nivel" de señal se encuentra en el WifiManager.calculateSignalLevel
método:
public static int calculateSignalLevel(int rssi, int numLevels) {
if (rssi <= MIN_RSSI) {
return 0;
} else if (rssi >= MAX_RSSI) {
return numLevels - 1;
} else {
float inputRange = (MAX_RSSI - MIN_RSSI);
float outputRange = (numLevels - 1);
return (int)((float)(rssi - MIN_RSSI) * outputRange / inputRange);
}
}
...donde MIN_RSSI
es -100 y MAX_RSSI
es -55 ( fuente ). El rango de entrada es "dinámico" en el sentido de que se basa en cuántos archivos de recursos están disponibles para el icono de WiFi, pero en AOSP este valor será 5 porque tiene iconos para 0-4 barras. Usando la lógica y los valores anteriores, los rangos son aproximadamente:
- -55 o superior: 4 bares
- De -56 a -66: 3 bares
- -67 a -77: 2 bares
- -78 a -88: 1 bar
- -89 o menos: 0 bares