Android Wifi控制方法总结

来源:互联网 发布:aster数据下载 编辑:程序博客网 时间:2024/06/07 06:02

写了一个工具类来辅助处理wifi相关状态控制和连接等功能,参考了网上的相关文件,并修改了里面的一些bug和问题,本文给出的方法均经过验证可用~

package com.xys.jrdtraining.network;import java.util.List;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.net.wifi.WifiManager.WifiLock;/** * wifi ctrl utils class *  * @author yisheng.xu *  */public class WifiOpenHelper {// 定义WifiManager对象private WifiManager mWifiManager;// 定义WifiInfo对象private WifiInfo mWifiInfo;// 扫描出的网络连接列表private List<ScanResult> mWifiList;// 网络连接列表private List<WifiConfiguration> mWifiConfiguration;// 定义一个WifiLockWifiLock mWifiLock;// 构造器public WifiOpenHelper(Context context) {// 取得WifiManager对象mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);// 取得WifiInfo对象mWifiInfo = mWifiManager.getConnectionInfo();}// 打开WIFIpublic void openWifi() {if (!mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(true);}}// 断开当前网络public void disconnectWifi() {if (!mWifiManager.isWifiEnabled()) {mWifiManager.disconnect();}}// 关闭WIFIpublic void closeWifi() {if (mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(false);}}// 检查当前WIFI状态public int checkState() {return mWifiManager.getWifiState();}// 锁定WifiLockpublic void acquireWifiLock() {mWifiLock.acquire();}// 解锁WifiLockpublic void releaseWifiLock() {// 判断时候锁定if (mWifiLock.isHeld()) {mWifiLock.acquire();}}// 创建一个WifiLockpublic void creatWifiLock() {mWifiLock = mWifiManager.createWifiLock("Test");}// 得到配置好的网络public List<WifiConfiguration> getConfiguration() {return mWifiConfiguration;}// 指定配置好的网络进行连接public void connectConfiguration(int index) {// 索引大于配置好的网络索引返回if (index > mWifiConfiguration.size()) {return;}// 连接配置好的指定ID的网络mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,true);}public void startScan() {mWifiManager.startScan();// 得到扫描结果mWifiList = mWifiManager.getScanResults();// 得到配置好的网络连接mWifiConfiguration = mWifiManager.getConfiguredNetworks();}// 得到网络列表public List<ScanResult> getWifiList() {return mWifiList;}// 查看扫描结果public StringBuilder lookUpScan() {StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < mWifiList.size(); i++) {stringBuilder.append("Index_" + Integer.valueOf(i + 1).toString()+ ":");// 将ScanResult信息转换成一个字符串包// 其中把包括:BSSID、SSID、capabilities、frequency、levelstringBuilder.append((mWifiList.get(i)).toString());stringBuilder.append("/n");}return stringBuilder;}// 得到MAC地址public String getMacAddress() {return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();}// 得到接入点的BSSIDpublic String getBSSID() {return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();}// 得到IP地址public int getIPAddress() {return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();}// 得到连接的IDpublic int getNetworkId() {return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();}// 得到WifiInfo的所有信息包public String getWifiInfo() {return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();}// 添加一个网络并连接public void addNetwork(WifiConfiguration wcg) {int wcgID = mWifiManager.addNetwork(wcg);boolean b = mWifiManager.enableNetwork(wcgID, true);System.out.println("a--" + wcgID);System.out.println("b--" + b);}// 断开指定ID的网络public void disconnectWifi(int netId) {mWifiManager.disableNetwork(netId);mWifiManager.disconnect();}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.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);}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.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;}}

以上~

2 0