package com.classic.android.utils; import android.Manifest; import android.annotation.SuppressLint; import android.content.Context; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.support.annotation.NonNull; import android.support.annotation.RequiresPermission; import java.util.List; /** * 应用名称: BaseProject * 包 名 称: com.classic.android.utils * * 文件描述: wifi工具类 * 创 建 人: 续写经典 * 创建时间: 2015/11/3 17:26 */ @SuppressWarnings({"unused", "WeakerAccess"}) public final class WifiHelper { /** wifi加密类型:无加密 */ public static final int WIFI_ENCRYPTION_TYPE_NONE = WifiConfiguration.KeyMgmt.NONE; /** wifi加密类型:WEP/IEEE8021X加密 */ public static final int WIFI_ENCRYPTION_TYPE_WEP = WifiConfiguration.KeyMgmt.IEEE8021X; /** wifi加密类型:PSK加密 */ public static final int WIFI_ENCRYPTION_TYPE_PSK = WifiConfiguration.KeyMgmt.WPA_PSK; /** wifi加密类型:EAP加密 */ public static final int WIFI_ENCRYPTION_TYPE_EAP = WifiConfiguration.KeyMgmt.WPA_EAP; private volatile static WifiHelper sWifiHelper; private WifiManager mWifiManager; private WifiHelper(Context context) { mWifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); } public static WifiHelper getInstance(@NonNull Context context) { if (null == sWifiHelper) { synchronized (WifiHelper.class) { if (null == sWifiHelper) { sWifiHelper = new WifiHelper(context); } } } return sWifiHelper; } /** * 获取wifi加密类型 * * @return
* WIFI_ENCRYPTION_TYPE_WEP:WEP加密
* WIFI_ENCRYPTION_TYPE_PSK:PSK加密
* WIFI_ENCRYPTION_TYPE_EAP:EAP加密
* WIFI_ENCRYPTION_TYPE_NONE:无加密
*
*/
public static int getEncryptionType(@NonNull ScanResult scanResult) {
if (scanResult.capabilities.contains("WEP")) {
return WIFI_ENCRYPTION_TYPE_WEP;
} else if (scanResult.capabilities.contains("PSK")) {
return WIFI_ENCRYPTION_TYPE_PSK;
} else if (scanResult.capabilities.contains("EAP")) {
return WIFI_ENCRYPTION_TYPE_EAP;
}
return WIFI_ENCRYPTION_TYPE_NONE;
}
/**
* 启用/禁用 wifi
*/
@RequiresPermission(allOf = {Manifest.permission.CHANGE_WIFI_STATE,
Manifest.permission.ACCESS_WIFI_STATE})
public void setEnabled(boolean enabled) {
if (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING ||
mWifiManager.getWifiState() == WifiManager.WIFI_STATE_DISABLING) {
return;
}
mWifiManager.setWifiEnabled(enabled);
}
/**
* wifi是否打开
*/
@RequiresPermission(Manifest.permission.ACCESS_WIFI_STATE) public boolean isEnabled() {
return mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING ||
mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED;
}
/**
* 获取已连接过的wifi配置列表
*/
@RequiresPermission(Manifest.permission.ACCESS_WIFI_STATE)
public List