Quelle est la plage RSSI en stock pour l'icône d'indicateur WiFi dans la barre de notification ?
Réponse
Trop de publicités?Je n'ai pas regardé les anciennes versions, mais voici les informations exactes à partir d'Android 7.1.2.
Le code qui effectue la transformation de RSSI en "niveau" de signal se trouve dans le fichier WifiManager.calculateSignalLevel
méthode :
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);
}
}
...où MIN_RSSI
est de -100 et MAX_RSSI
est de -55 ( source ). La plage d'entrée est "dynamique" dans le sens où elle est basée sur le nombre de fichiers de ressources disponibles pour l'icône WiFi, mais dans AOSP, cette valeur sera de 5 car il y a des icônes pour 0-4 barres. En utilisant la logique et les valeurs ci-dessus, les gammes sont approximativement de :
- -55 ou plus : 4 bars
- -56 à -66 : 3 barres
- -67 à -77 : 2 barres
- -78 à -88 : 1 bar
- -89 ou moins : 0 bar