【问题标题】:How to convert WiFi level (i.e. -45 , -88 ) in to percentage?如何将 WiFi 级别(即 -45 、 -88 )转换为百分比?
【发布时间】:2015-08-06 17:54:18
【问题描述】:

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

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

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

【问题讨论】:

  • afaik 这个值没有下限。 0dB 应该是 100%。您将不得不任意设置下限。此外,dB 使用 20*log10(abs(x)) 计算
  • 也许这个链接会解释一些事情sengpielaudio.com/calculator-thd.htm。这些值 -45 是 dB 值 en.wikipedia.org/wiki/Decibel
  • 0dB 与任何正常水平相差甚远。事实上,0dB 是相当糟糕的(削波之类的)
  • 您可以将信噪比与单独的信号或噪声进行比较。
  • @JanDvorak 在 WiFi 接收中,0dBm 表示“无衰减”,等于接收功率与发送功率相同。削波在这里不是问题(您似乎对放大器的 0dBm 感到困惑,这可能会导致链的其余部分(主要是扬声器)出现削波)。

标签: android


【解决方案1】:

这个问题是非常依赖于接收天线。有些天线在 -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;
}

【讨论】:

  • 你能给我你的申请链接吗?
  • 扫描仪是应用程序的一部分,但这里是链接:play.google.com/store/apps/…
  • 我认为功能有问题。即现在我得到 -48 wifi 级别。然后我得到 52%。这是不对的。
  • @NiravRanpara “这是不对的”是什么意思。什么是正确的?
【解决方案2】:

WifiManager 类有一个函数 calculateSignalLevel,但正如它所说的 here,如果 numLevels 大于 45,它会导致错误。可能的解决方法可能是这样的:

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

当然,这将以 2.5% 为步长 - 我不知道您的用例,但也许这已经足够了。

正如其他人所说,计算百分比是有问题的,并且没有简单的精确解决方案。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      如果有此信息,您可以从信噪比而不是单独的信号强度中得出百分比。这可能是所需的指标。

      android.net.wifi.ScanResult 不会发布必要的信息(截至 2012 年 12 月),但您或许可以通过其他方式获取此信息。

      信号 = 噪声 => 不可用的信号,因此您可以设置 0dB SnR = 0%。您也可以将 10dB SnR 设置为 90%(90% 的信号功率不会被噪声淹没),100% = 完全没有噪声。更一般地说,

      p = 100% * (1 - 10^(SnR / (10dB)))
      

      【讨论】:

      • 你能说说如何在java(android)中实现吗?
      • @NiravRanpara 我不知道如何从 Android API 获取 SnR(我假设你已经知道了)。对于数学,请查看Math.pow
      • @NiravRanpara 关于其他实现细节将 100% 替换为 100 用于显示目的或根本不进行乘法以进行进一步计算,如果输入为已经以 dB 为单位。
      猜你喜欢
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 2012-02-17
      • 2019-07-03
      相关资源
      最近更新 更多