我可以在android中获得低或高wifi连接吗
我可以获得低或高wifi连接。我的意思是我可以测量从1到5的信号电平(假设只有一个网络)。我用calculatesignallevel。但它要么返回0,要么返回1。我可以在android中获得低或高wifi连接吗,android,Android,我可以获得低或高wifi连接。我的意思是我可以测量从1到5的信号电平(假设只有一个网络)。我用calculatesignallevel。但它要么返回0,要么返回1。 请帮助我您需要导入以下两个类 import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; 然后,您可以这样测量wifi信号强度: WifiManager wifi = (WifiManager) getSystemService(Context.WI
请帮助我您需要导入以下两个类
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
然后,您可以这样测量wifi信号强度:
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
int wifiSignalStrength = WifiManager.calculateSignalLevel(info.getRssi(), 4);
//displaying the wifi signal level in a Toast
Toast.makeText(getApplicationContext(), "signal strength: "+wifiSignalStrength, Toast.LENGTH_LONG).show();
实际上API中的代码是有缺陷的;如果使用46级或更高级别,它将始终返回0。阅读更多信息。 我想大多数人会想用101来表示水平,以准确计算百分比 它已在4.0.1及以上版本中修复。我做了这个,所以你可以在任何平台版本上使用它
public int getWifiSignalStrength(Context context){
int MIN_RSSI = -100;
int MAX_RSSI = -55;
int levels = 101;
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
int rssi = info.getRssi();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH){
return WifiManager.calculateSignalLevel(info.getRssi(), levels);
} else {
// this is the code since 4.0.1
if (rssi <= MIN_RSSI) {
return 0;
} else if (rssi >= MAX_RSSI) {
return levels - 1;
} else {
float inputRange = (MAX_RSSI - MIN_RSSI);
float outputRange = (levels - 1);
return (int)((float)(rssi - MIN_RSSI) * outputRange / inputRange);
}
}
}//end method
public int getWifiSignalStrength(上下文){
int MIN_RSSI=-100;
int MAX_RSSI=-55;
智力水平=101;
WifiManager wifi=(WifiManager)context.getSystemService(context.wifi\u SERVICE);
WifiInfo=wifi.getConnectionInfo();
int rssi=info.getRssi();
if(android.os.Build.VERSION.SDK\u INT>=android.os.Build.VERSION\u code.ICE\u三明治){
返回WifiManager.calculateSignalLevel(info.getRssi(),levels);
}否则{
//这是自4.0.1以来的代码
如果(rssi=最大值){
回报水平-1;
}否则{
浮点输入范围=(最大值-最小值);
浮点输出范围=(级别-1);
返回(int)((浮点)(rssi-MIN_rssi)*输出量程/输入量程);
}
}
}//结束方法
谢谢你。。。但是calculatesignallevel中的4表示什么。。。因为我想根据信号强度设置一个图像,它指示在计算的水平上要考虑的层数。看见