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;
}
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;
}
相关文章推荐
- Android获取当前连接wifi的信道
- Android获取当前连接的wifi名称
- Android获取当前连接的wifi名称
- Android获取当前连接的wifi名称
- Android编程实现获取当前连接wifi名字的方法
- android 手机获取当前连接的wifi配置信息
- Android之获取当前连接WiFi的信息
- Android连续获取当前所连接WiFi及周围热点列表信息的解决方案
- android 手机获取当前连接的wifi配置信息
- 【Android】获取当前连接的wifi IP地址
- Android获取当前连接的wifi名称
- Android获取当前的网络连接信息和网络链接状态 GPRS 和 WiFi网络
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- IOS获取当前连接wifi(SSID...)
- 安卓手机获取当前连接的WIFI相关信息
- Android 获取当前连接 Cid和lac
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- Android机顶盒 获取当前连接网络的Ip地址
- 获取android手机已连接过wifi密码