文章标题

来源:互联网 发布:淘宝图片批量删除软件 编辑:程序博客网 时间:2024/05/11 14:15
/**  *wifi基本操作工具类  */public class WifiTool {    // 上下文Context对象    private Context mContext;    // WifiManager对象    private WifiManager mWifiManager;    public WifiTool(Context mContext) {        this.mContext = mContext;        mWifiManager = (WifiManager) mContext                .getSystemService(Context.WIFI_SERVICE);    }    /**     * 判断手机是否连接在Wifi上     */    public boolean isConnectWifi() {        // 获取ConnectivityManager对象        ConnectivityManager conMgr = (ConnectivityManager) mContext                .getSystemService(Context.CONNECTIVITY_SERVICE);        // 获取NetworkInfo对象        NetworkInfo info = conMgr.getActiveNetworkInfo();        // 获取连接的方式为wifi        State wifi = conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI)                .getState();        if (info != null && info.isAvailable() && wifi == State.CONNECTED)        {            return true;        } else {            return false;        }    }    /**     * 获取当前手机所连接的wifi信息     */    public WifiInfo getCurrentWifiInfo() {        return mWifiManager.getConnectionInfo();    }    /**     * 添加一个网络并连接     * 传入参数:WIFI发生配置类WifiConfiguration     */    public boolean addNetwork(WifiConfiguration wcg) {        int wcgID = mWifiManager.addNetwork(wcg);        return mWifiManager.enableNetwork(wcgID, true);    }    /**     * 搜索附近的热点信息,并返回所有热点为信息的SSID集合数据     */    public List<String> getScanSSIDsResult() {        // 扫描的热点数据        List<ScanResult> resultList;        // 开始扫描热点        mWifiManager.startScan();        resultList = mWifiManager.getScanResults();        ArrayList<String> ssids = new ArrayList<String>();        if (resultList != null) {            for (ScanResult scan : resultList) {                ssids.add(scan.SSID);// 遍历数据,取得ssid数据集            }        }        return ssids;    }    /**     * 得到手机搜索到的ssid集合,从中判断出设备的ssid(dssid)     */    public List<String> accordSsid() {        List<String> s = getScanSSIDsResult();        List<String> result = new ArrayList<String>();        for (String str : s) {            if (checkDssid(str)) {                result.add(str);            }        }        return result;    }    /**     * 检测指定ssid是不是匹配的ssid,目前支持GBELL,TOP,后续可添加。     *      * @param ssid     * @return     */    private boolean checkDssid(String ssid,String condition) {        if (!TextUtils.isEmpty(ssid)&&!TextUtils.isEmpty(condition)) {        //这里条件根据自己的需求来判断,我这里就是随便写的一个条件            if (ssid.length() > 8 && (ssid.substring(0, 8).equals(condition))) {                return true;            }            else {                return false;            }        } else {            return false;        }    }    /**     * 连接wifi     * 参数:wifi的ssid及wifi的密码     */    public boolean connectWifiTest(final String ssid, final String pwd) {        boolean isSuccess = false;        boolean flag = false;        mWifiManager.disconnect();        boolean addSucess = addNetwork(CreateWifiInfo(ssid, pwd, 3));        if (addSucess) {            while (!flag && !isSuccess) {                try {                    Thread.sleep(10000);                } catch (InterruptedException e1) {                    e1.printStackTrace();                }                String currSSID = getCurrentWifiInfo().getSSID();                if (currSSID != null)                    currSSID = currSSID.replace("\"", "");                int currIp = getCurrentWifiInfo().getIpAddress();                                if (currSSID != null && currSSID.equals(ssid) && currIp != 0) {        //这里还需要做优化处理,增强结果判断                     isSuccess = true;                } else {                    flag = true;                }            }        }        return isSuccess;    }    /**     * 创建WifiConfiguration对象     * 分为三种情况:1没有密码;2用wep加密;3用wpa加密     * @param SSID     * @param Password     * @param Type     * @return     */    public WifiConfiguration CreateWifiInfo(String SSID, String Password,            int Type) {        WifiConfiguration config = new WifiConfiguration();        config.allowedAuthAlgorithms.clear();        config.allowedGroupCiphers.clear();        config.allowedKeyManagement.clear();        config.allowedPairwiseCiphers.clear();        config.allowedProtocols.clear();        config.SSID = "\"" + SSID + "\"";        WifiConfiguration tempConfig = this.IsExsits(SSID);        if (tempConfig != null) {            mWifiManager.removeNetwork(tempConfig.networkId);        }        if (Type == 1) // WIFICIPHER_NOPASS        {            config.wepKeys[0] = "";            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);            config.wepTxKeyIndex = 0;        }        if (Type == 2) // WIFICIPHER_WEP        {            config.hiddenSSID = true;            config.wepKeys[0] = "\"" + Password + "\"";            config.allowedAuthAlgorithms                    .set(WifiConfiguration.AuthAlgorithm.SHARED);            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);            config.allowedGroupCiphers                    .set(WifiConfiguration.GroupCipher.WEP104);            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);            config.wepTxKeyIndex = 0;        }        if (Type == 3) // WIFICIPHER_WPA        {            config.preSharedKey = "\"" + Password + "\"";            config.hiddenSSID = true;            config.allowedAuthAlgorithms                    .set(WifiConfiguration.AuthAlgorithm.OPEN);            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);            config.allowedPairwiseCiphers                    .set(WifiConfiguration.PairwiseCipher.TKIP);            // config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);            config.allowedPairwiseCiphers                    .set(WifiConfiguration.PairwiseCipher.CCMP);            config.status = WifiConfiguration.Status.ENABLED;        }        return config;    }    private WifiConfiguration IsExsits(String SSID) {        List<WifiConfiguration> existingConfigs = mWifiManager                .getConfiguredNetworks();        for (WifiConfiguration existingConfig : existingConfigs) {            if (existingConfig.SSID.equals("\"" + SSID + "\"")) {                return existingConfig;            }        }        return null;    }}
0 0
原创粉丝点击