WiFi レベル (つまり -45 、 -88 ) をパーセンテージに変換する方法は?
WiFi レベルを % に変換したい。レベル(dBm 形式)を使用して WiFi レベルを取得します
私はたくさんのグーグルを試しますが、適切な答えが得られません
WiFi レベル (つまり -45 、 -88 ) をパーセンテージに変換する方法は?
WiFi レベルを % に変換したい。レベル(dBm 形式)を使用して WiFi レベルを取得します
私はたくさんのグーグルを試しますが、適切な答えが得られません
これに関する問題は、受信アンテナに大きく依存することです。一部のアンテナは、-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;
}
WifiManager クラスには関数calculateSignalLevelがありますが、ここに記載されているように、numLevels が 45 より大きい場合はエラーになります。考えられる回避策は次のようなものです。
double percentage = WifiManager.calculateSignalLevel(int rssi, 40) * 2.5;
もちろん、これは 2.5 パーセントのステップになります。使用例はわかりませんが、これで十分かもしれません。
他の人が述べているように、パーセンテージの計算には問題があり、その単純で正確な解決策はありません。
この情報が利用可能な場合は、シグナル強度だけではなく、シグナル対ノイズ比からパーセンテージを導き出すことができます。これはおそらく望ましいメトリックです。
Anandroid.net.wifi.ScanResult
は必要な情報を公開していませんが (2012 年 12 月現在)、他の方法でこの情報を入手できる可能性があります。
信号 = ノイズ => 使用できない信号なので、0dB SnR = 0% に設定できます。また、10dB SnR を 90% (信号電力の 90% がノイズでかき消されない) に設定することもできます。100% = ノイズはまったくありません。より一般的には、
p = 100% * (1 - 10^(SnR / (10dB)))