Android获取当前连接wifi的信道

做网络诊断,需要诊断当前wifi所在信道是否拥挤,目前只是解决了获取当前wifi所在信道,主要是用ScanResult 的frequency字段,还需要用SSID和BSSID从ScanResults匹配到当前的wifi信号wifiInfo,具体代码如下:

        public static int getCurrentChannel(Context context) {
            WifiManager wifiManager = (WifiManager) context
                    .getSystemService(Context.WIFI_SERVICE);
     
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();// 当前wifi连接信息
            List scanResults = wifiManager.getScanResults();
            for (ScanResult result : scanResults) {
                if (result.BSSID.equalsIgnoreCase(wifiInfo.getBSSID())
                        && result.SSID.equalsIgnoreCase(wifiInfo.getSSID()
                                .substring(1, wifiInfo.getSSID().length() - 1))) {
                    return getChannelByFrequency(result.frequency);
                }
            }
     
            return -1;
        }
     /**
      * 根据频率获得信道
      * 
      * @param frequency
      * @return
      */
     public static int getChannelByFrequency(int frequency) {
         int channel = -1;
         switch (frequency) {
         case 2412:
             channel = 1;
             break;
         case 2417:
             channel = 2;
             break;
         case 2422:
             channel = 3;
             break;
         case 2427:
             channel = 4;
             break;
         case 2432:
             channel = 5;
             break;
         case 2437:
             channel = 6;
             break;
         case 2442:
             channel = 7;
             break;
         case 2447:
             channel = 8;
             break;
         case 2452:
             channel = 9;
             break;
         case 2457:
             channel = 10;
             break;
         case 2462:
             channel = 11;
             break;
         case 2467:
             channel = 12;
             break;
         case 2472:
             channel = 13;
             break;
         case 2484:
             channel = 14;
             break;
         case 5745:
             channel = 149;
             break;
         case 5765:
             channel = 153;
             break;
         case 5785:
             channel = 157;
             break;
         case 5805:
             channel = 161;
             break;
         case 5825:
             channel = 165;
             break;
         }
         return channel;
     }

你可能感兴趣的:(Android获取当前连接wifi的信道)