【问题标题】:can i get low or high wifi connectivity in android我可以在 android 中获得低或高 wifi 连接吗
【发布时间】:2011-03-11 05:50:04
【问题描述】:

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

【问题讨论】:

    标签: android


    【解决方案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(); 
    

    【讨论】:

    • 谢谢你......但是calculatesignallevel中的4表示什么......因为我想根据信号强度设置图像
    • 表示计算级别中要考虑的级别数。见here
    【解决方案2】:

    实际上 API 中的代码有缺陷;如果您使用 46 个或更多级别,它将始终返回 0。阅读here 了解更多信息。 我想大多数人都希望使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      相关资源
      最近更新 更多