web-dev-qa-db-ja.com

AndroidでWiFi信号強度を取得する

次のコードを使用して、dBmでWiFi信号レベルを取得できます。

for (ScanResult result : wifiScanResultList) {
    int signalLevel = result.level;
}

負の値を与えます。デフォルトのシステムWiFi設定が表示され、接続されたWiFiネットワークをクリックすると、信号強度として「良い」または「悪い」が表示されます。これらの負の値を「良い」信号強度または「悪い」信号強度としてフィルタリングできる範囲はどのくらいですか?

40
AnujAroshA

古い投稿ですが、これは誰かを助けるかもしれません...

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)

51
Alan

受信した無線信号電力のdBm値がどのように表されるかを確認してください。

優れた> -50 dBm

-50〜-60 dBmが良好

-60〜-70 dBm

弱い<-70 dBm

23
Nisha Salim
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");
17
ddiego

はい、正確に。これは、受信信号電力のdBm値の表現方法です。 こちら ウィキペディアの詳細。

-100は最低値(信号なし)を意味し、0は非常に良好な信号(100%)を意味します

8

あなたはすでにレベルを持っているので、私はその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
    }
3
Ajji