Je peux obtenir le niveau du signal WiFi en dBm en utilisant le code suivant.
for (ScanResult result : wifiScanResultList) {
int signalLevel = result.level;
}
Il donne une valeur négative. Lorsque nous voyons le paramètre Wi-Fi du système par défaut et que nous cliquons sur le réseau Wi-Fi connecté, cela donne "Bon" ou "Mauvais" comme force du signal. Quelle est la plage dans laquelle nous pouvons filtrer ces valeurs négatives en tant que force de signal "bonne" ou force de signal "mauvaise"?
c'est un ancien poste mais cela pourrait aider quelqu'un ...
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int numberOfLevels = 5;
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels);
Documentation: public static int CalculateSignalLevel (int rssi, int numLevels)
Veuillez vérifier comment les valeurs dBm de la puissance du signal sans fil reçue sont représentées.
Excellent> -50 dBm
Bon -50 à -60 dBm
Passable -60 à -70 dBm
Faible <-70 dBm
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
// Level of a Scan Result
List<ScanResult> wifiList = wifiManager.getScanResults();
for (ScanResult scanResult : wifiList) {
int level = WifiManager.calculateSignalLevel(scanResult.level, 5);
System.out.println("Level is " + level + " out of 5");
}
// Level of current connection
int rssi = wifiManager.getConnectionInfo().getRssi();
int level = WifiManager.calculateSignalLevel(rssi, 5);
System.out.println("Level is " + level + " out of 5");
Oui, exactement. C'est ainsi que les valeurs dBm de la puissance du signal reçu sont représentées. Voici quelques détails sur Wikipedia.
-100 signifie la valeur la plus basse (pas de signal du tout) et 0 signifie un signal extrêmement bon (100%)
Vous avez déjà les niveaux, donc je vais vous dire comment classer ce wifi en force élevée, moyenne ou faible. Voici le code
int level = result.level;
if (level <= 0 && level >= -50) {
//Best signal
} else if (level < -50 && level >= -70) {
//Good signal
} else if (level < -70 && level >= -80) {
//Low signal
} else if (level < -80 && level >= -100) {
//Very weak signal
} else {
// no signals
}