Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在android中获得低或高wifi连接吗_Android - Fatal编程技术网

我可以在android中获得低或高wifi连接吗

我可以在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

我可以获得低或高wifi连接。我的意思是我可以测量从1到5的信号电平(假设只有一个网络)。我用calculatesignallevel。但它要么返回0,要么返回1。
请帮助我

您需要导入以下两个类

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表示什么。。。因为我想根据信号强度设置一个图像,它指示在计算的水平上要考虑的层数。看见