次のコードを使用して、dBmでWiFi信号レベルを取得できます。
for (ScanResult result : wifiScanResultList) {
int signalLevel = result.level;
}
負の値を与えます。デフォルトのシステムWiFi設定が表示され、接続されたWiFiネットワークをクリックすると、信号強度として「良い」または「悪い」が表示されます。これらの負の値を「良い」信号強度または「悪い」信号強度としてフィルタリングできる範囲はどのくらいですか?
古い投稿ですが、これは誰かを助けるかもしれません...
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int numberOfLevels = 5;
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels);
ドキュメント: public static int CalculateSignalLevel(int rssi、int numLevels)
受信した無線信号電力のdBm値がどのように表されるかを確認してください。
優れた> -50 dBm
-50〜-60 dBmが良好
-60〜-70 dBm
弱い<-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");
はい、正確に。これは、受信信号電力のdBm値の表現方法です。 こちら ウィキペディアの詳細。
-100は最低値(信号なし)を意味し、0は非常に良好な信号(100%)を意味します
あなたはすでにレベルを持っているので、私はそのwifiを高強度、中強度、または低強度に分類する方法を教えます。以下はコードです
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
}