gpt4 book ai didi

android - android WifiManager中的Rssi是什么意思

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:37 27 4
gpt4 key购买 nike

我正在尝试使用 getRssi() 获取当前 wifi 连接的信号强度

private void checkWifi(){
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo Info = cm.getActiveNetworkInfo();
if (Info == null || !Info.isConnectedOrConnecting()) {
Log.i("WIFI CONNECTION", "No connection");
} else {
int netType = Info.getType();
int netSubtype = Info.getSubtype();

if (netType == ConnectivityManager.TYPE_WIFI) {
wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
int linkSpeed = wifiManager.getConnectionInfo().getLinkSpeed();
int rssi = wifiManager.getConnectionInfo().getRssi();
Log.i("WIFI CONNECTION", "Wifi connection speed: "+linkSpeed + " rssi: "+rssi);


//Need to get wifi strength
}
}
}

问题是我得到了 -35 或 -47 等数字。我不理解它们的值。我查看了 android 文档及其所有内容:

public int getRssi ()

Since: API Level 1 Returns the received signal strength indicator of the current 802.11 network.

This is not normalized, but should be!

Returns the RSSI, in the range ??? to ???

有人可以解释如何“归一化”或理解这些结果吗?

最佳答案

我在 WifiManager.java 中找到了这个:

/** Anything worse than or equal to this will show 0 bars. */
private static final int MIN_RSSI = -100;

/** Anything better than or equal to this will show the max bars. */
private static final int MAX_RSSI = -55;

android 上的相关 rssi 范围在 -100 和 -55 之间

有这个静态方法WifiManager.calculateSignalLevel(rssi,numLevel)将为您计算信号电平:

int wifiLevel = WifiManager.calculateSignalLevel(rssi,5);

返回一个 0 到 4 之间的数字(即 numLevel-1):您在工具栏中看到的条数。

编辑 API 30+

静态方法现已弃用,您应该使用 instance method

wifiManager.calculateSignalLevel(rssi)

主要区别在于级别数现在由 wifiManager.getMaxSignalLevel() 给出

关于android - android WifiManager中的Rssi是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275306/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com