1

如何将 WiFi 级别(即 -45、-88)转换为百分比?

我想将 WiFi 级别转换为 % 。我使用级别(dBm 格式)获得 WiFi 级别

我尝试了很多谷歌但没有得到正确的答案

4

4 回答 4

4

问题在于它非常依赖于接收天线。有些天线在 -90 dBm 时没有记录可用信号,有些已经在 -80 时。您将很难找到 0%(100% 严格来说是 0dBm)。

我创建了一个 Wifi 扫描仪应用程序,我使用 -100dBm 作为 0% 和 0dBm 作为 100%,在 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 回答
1

这是微软为 dBm <> 百分比转换所做的: https ://stackoverflow.com/a/15798024/2096041

基本上-50 .. 0 dBm线性映射到100 .. 0 %. 像 MS 一样,我更愿意坐在安全的一边,而不是像这里的一些答案所建议的那样使用 -100 作为 100%。

于 2014-03-31T08:51:45.027 回答
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 回答