gpt4 book ai didi

android - wifimanager.calculatesignalstrenth 问题

转载 作者:搜寻专家 更新时间:2023-11-01 09:14:09 25 4
gpt4 key购买 nike

我正在使用以下代码来计算 wifi 信号强度:

List<ScanResult> results = wifiDemo.wifi.getScanResults();

for(int i=0;i<results.size();i++)
{
int signallevel=WifiManager.calculateSignalLevel(result.level,10);
}

但它为所有 wifi 接入点返回相同的值。谁能告诉我我做错了什么?

最佳答案

代码如下:

public int getWifiSignalState(Context ctx) {
int signalStrength = -1;
try {
final WifiManager wifi = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);
int state = wifi.getWifiState();
if(state == WifiManager.WIFI_STATE_ENABLED) {
List<ScanResult> results = wifi.getScanResults();
if(results == null)
return signalStrength;
for (ScanResult result : results) {
if(result != null && wifi != null && wifi.getConnectionInfo() != null && result.BSSID != null
&& result.BSSID.equals(wifi.getConnectionInfo().getBSSID())) {
int level = 0;
level = calculateSignalLevel(wifi.getConnectionInfo().getRssi(), result.level);

// this is to handle java.lang.ArithmeticException: divide by zero
if(level != 0 && result.level != 0) {
// convert signal strength into percentage
int difference = level * 100 / result.level;
if(difference >= 100)
signalStrength = 4;
else if(difference >= 75)
signalStrength = 3;
else if(difference >= 50)
signalStrength = 2;
else if(difference >= 25)
signalStrength = 1;
}
}

}
}
} catch(Exception e) {
ErrorReporter.handleSilentException(ctx, e);
}

return signalStrength;
}

//此方法修复android 2.3除以零异常的问题

public int calculateSignalLevel(int rssi, int numLevels) {
if(rssi <= MIN_RSSI) {
return 0;
} else if(rssi >= MAX_RSSI) {
return numLevels - 1;
} else {
float inputRange = (MAX_RSSI - MIN_RSSI);
float outputRange = (numLevels - 1);
if(inputRange != 0)
return (int) ((float) (rssi - MIN_RSSI) * outputRange / inputRange);
}
return 0;
}

关于android - wifimanager.calculatesignalstrenth 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5932073/

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