您的位置:首页 > 移动开发 > Android开发

Android获取当前连接wifi的信道

2015-03-13 18:43 681 查看
做网络诊断,需要诊断当前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<ScanResult> 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: