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<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;  
} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值