1

WiFi レベル (つまり -45 、 -88 ) をパーセンテージに変換する方法は?

WiFi レベルを % に変換したい。レベル(dBm 形式)を使用して WiFi レベルを取得します

私はたくさんのグーグルを試しますが、適切な答えが得られません

4

4 に答える 4

4

これに関する問題は、受信アンテナに大きく依存することです。一部のアンテナは、-90 dBm で使用可能な信号を記録せず、一部は既に -80 になっています。0% (100% は厳密には 0dBm) を見つけるのは困難です。

-100dBm を 0%、0dBm を 100% として使用する Wifi スキャナー アプリケーションを作成しました。Java では、次のようになります ( MIN_DBM-100)。

public int getPowerPercentage(int power) {
     int i = 0;
     if (power <= MIN_DBM) {
            i = 0;
     } else {
            i = 100 + power;
     }

     return i;
}
于 2012-12-18T08:09:52.537 に答える
1

WifiManager クラスには関数calculateSignalLevelがありますが、ここに記載されているように、numLevels が 45 より大きい場合はエラーになります。考えられる回避策は次のようなものです。

double percentage = WifiManager.calculateSignalLevel(int rssi, 40) * 2.5;

もちろん、これは 2.5 パーセントのステップになります。使用例はわかりませんが、これで十分かもしれません。

他の人が述べているように、パーセンテージの計算には問題があり、その単純で正確な解決策はありません。

于 2012-12-18T10:05:31.053 に答える
0

この情報が利用可能な場合は、シグナル強度だけではなく、シグナル対ノイズ比からパーセンテージを導き出すことができます。これはおそらく望ましいメトリックです。

Anandroid.net.wifi.ScanResultは必要な情報を公開していませんが (2012 年 12 月現在)、他の方法でこの情報を入手できる可能性があります。

信号 = ノイズ => 使用できない信号なので、0dB SnR = 0% に設定できます。また、10dB SnR を 90% (信号電力の 90% がノイズでかき消されない) に設定することもできます。100% = ノイズはまったくありません。より一般的には、

p = 100% * (1 - 10^(SnR / (10dB)))
于 2012-12-18T08:19:00.017 に答える