Android Wifi自动打开并连接
来源:互联网 发布:mac pro能做什么 编辑:程序博客网 时间:2024/06/05 05:21
转自:http://blog.csdn.net/yangwen123/article/details/9996359
版权声明:本文为博主原创文章,未经博主允许不得转载。
WIFI自动打开并连接到指定的热点:
- do {
- try {
-
- mAdmin.connectWifi(SSID, PWD, WifiCipherType.WIFICIPHER_WPA);
- Thread.sleep(20 * 1000);
- } catch (InterruptedException e) {
-
- Log.i(TAG, "connect wifi failed. please open wifi !");
- break;
- }
- } while (!mAdmin.isWifiConnect());
连接指定wifi热点
- public void connectWifi(String SSID, String Password, WifiCipherType Type) {
-
- if (!this.openWifi()) {
- return;
- }
-
- while (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) {
- try {
-
- Thread.currentThread();
- Thread.sleep(100);
- } catch (InterruptedException ie) {
- }
- }
-
- WifiConfiguration config = IsConfig(SSID);
- if (config == null) {
-
- config = CreateWifiInfo(SSID, Password, Type);
- }else {
- mWifiManager.removeNetwork(config.networkId);
- }
-
- WifiManager.Channel mChannel = mWifiManager.initialize(mContext, mContext.getMainLooper(), null);
- mWifiManager.connect(mChannel, config, null);
- }
判断是否已经配置过当前wifi热点
- public WifiConfiguration IsConfig(String SSID) {
- List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
- if (existingConfigs != null && existingConfigs.size() > 0) {
- for (WifiConfiguration existingConfig : existingConfigs) {
- if (existingConfig.SSID.equals("\"" + SSID + "\"")) {
- return existingConfig;
- }
- }
- }
- return null;
- }
添加一个wifi热点信息配置
- public WifiConfiguration CreateWifiInfo(String SSID, String Password, WifiCipherType Type) {
- WifiConfiguration config = new WifiConfiguration();
- config.allowedAuthAlgorithms.clear();
- config.allowedGroupCiphers.clear();
- config.allowedKeyManagement.clear();
- config.allowedPairwiseCiphers.clear();
- config.allowedProtocols.clear();
- config.SSID = "\"" + SSID + "\"";
- if (Type == WifiCipherType.WIFICIPHER_NOPASS) {
- config.wepKeys[0] = "";
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- config.wepTxKeyIndex = 0;
- }
- if (Type == WifiCipherType.WIFICIPHER_WEP) {
- config.preSharedKey = "\"" + Password + "\"";
- config.hiddenSSID = true;
- 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 == WifiCipherType.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.status = WifiConfiguration.Status.ENABLED;
- } else {
- return null;
- }
- return config;
- }
打开或关闭wifi连接
-
- public boolean openWifi() {
- boolean bRet = true;
- if (!mWifiManager.isWifiEnabled()) {
- bRet = mWifiManager.setWifiEnabled(true);
- }
- return bRet;
- }
-
-
- public void closeWifi() {
- if (mWifiManager.isWifiEnabled()) {
- mWifiManager.setWifiEnabled(false);
- }
- }
判断wifi是否成功连接
- public boolean isWifiConnect() {
- ConnectivityManager mConnectivityManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo mWifi = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
- return mWifi.isConnected();
- }