Wifi的使用

 

private WifiManager mWifiManager;

mWifiManager = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE);

 

1.判断当前是否连着wifi:

mWifiManager.isWifiEnabled()

2.获取WiFi相关信息:

//获取bssid
String bssid = mWifiManager.getConnectionInfo().getBSSID();
//获取wifi名称
String wifiSsidNameCharset = getWifiSsidNameCharset(mWifiManager.getConnectionInfo());
//获取网络id
int networkId = mWifiManager.getConnectionInfo().getNetworkId();
//判断是否5G
boolean is5g = is5GHz(getFrequency(mWifiManager));

/**
 * 判断wifi是否为5G
 *
 * @param freq
 * @return
 */
public static boolean is5GHz(int freq) {
    return freq > 4900 && freq < 5900;
}

/**
 * 兼容 android 5.0以下的
 */
public static int getFrequency(WifiManager wifiManager) {
    int fre = -1;
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    String tempSSID = wifiInfo.getSSID();

    if (tempSSID != null && tempSSID.length() > 2) {
        if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.LOLLIPOP) {
            fre = wifiInfo.getFrequency();
        } else {
            List<ScanResult> scanResults = wifiManager.getScanResults();
            for (ScanResult scanResult : scanResults) {
                if (scanResult.SSID.equals(tempSSID) || scanResult.SSID.equals(tempSSID.replaceAll("\"", ""))) {
                    fre = scanResult.frequency;
                    break;
                }
            }
        }
    }
    return fre;
}
public String getWifiSsidNameCharset(WifiInfo wifiInfo) {
    try {
        Field wifiSsidfield = WifiInfo.class
                .getDeclaredField("mWifiSsid");
        wifiSsidfield.setAccessible(true);
        Class<?> wifiSsidClass = wifiSsidfield.getType();
        Object wifiSsid = wifiSsidfield.get(wifiInfo);
        Method method = wifiSsidClass
                .getDeclaredMethod("getOctets");
        byte[] bytes = (byte[]) method.invoke(wifiSsid);
        return new String(bytes, "UTF-8");
    } catch (Exception e) {
    }
    return null;
}

3.跳转到wifi设置页面:

public static void switchToWLANSetting(Context context) {
    if (null == context) return;
    Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
    if (!(context instanceof Activity)) {
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }
    context.startActivity(intent);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值