Android Wifi自动打开并连接

来源:互联网 发布:mac pro能做什么 编辑:程序博客网 时间:2024/06/05 05:21

转自:http://blog.csdn.net/yangwen123/article/details/9996359

WIFI自动打开并连接到指定的热点:

[java] view plain copy
  1. do {  
  2.     try {  
  3.         //连接到指定的wifi热点  
  4.         mAdmin.connectWifi(SSID, PWD, WifiCipherType.WIFICIPHER_WPA);  
  5.         Thread.sleep(20 * 1000);  
  6.     } catch (InterruptedException e) {  
  7.         // TODO Auto-generated catch block  
  8.         Log.i(TAG, "connect wifi failed. please open wifi !");  
  9.         break;  
  10.     }  
  11. while (!mAdmin.isWifiConnect()); //判断wifi是否连接成功  
连接指定wifi热点

[java] view plain copy
  1. public void connectWifi(String SSID, String Password, WifiCipherType Type) {  
  2.     //打开wifi  
  3.     if (!this.openWifi()) {  
  4.         return;  
  5.     }  
  6.     //等到wifi状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句  
  7.     while (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) {  
  8.         try {  
  9.             // 为了避免程序一直while循环,让它睡个100毫秒在检测……  
  10.             Thread.currentThread();  
  11.             Thread.sleep(100);  
  12.         } catch (InterruptedException ie) {  
  13.         }  
  14.     }  
  15.     //判断是否已配置过当前热点  
  16.     WifiConfiguration config = IsConfig(SSID);   
  17.     if (config == null) {  
  18.         //创建一个当前连接的wifi热点  
  19.         config = CreateWifiInfo(SSID, Password, Type);  
  20.     }else {  
  21.         mWifiManager.removeNetwork(config.networkId);  
  22.     }  
  23.       
  24.     WifiManager.Channel mChannel = mWifiManager.initialize(mContext, mContext.getMainLooper(), null);  
  25.     mWifiManager.connect(mChannel, config, null);  
  26. }  
判断是否已经配置过当前wifi热点

[java] view plain copy
  1. public WifiConfiguration IsConfig(String SSID) {  
  2.     List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();  
  3.     if (existingConfigs != null && existingConfigs.size() > 0) {  
  4.         for (WifiConfiguration existingConfig : existingConfigs) {  
  5.             if (existingConfig.SSID.equals("\"" + SSID + "\"")) {  
  6.                 return existingConfig;  
  7.             }  
  8.         }  
  9.     }  
  10.     return null;  
  11. }  
添加一个wifi热点信息配置

[java] view plain copy
  1. public WifiConfiguration CreateWifiInfo(String SSID, String Password, WifiCipherType Type) {  
  2.     WifiConfiguration config = new WifiConfiguration();  
  3.     config.allowedAuthAlgorithms.clear();  
  4.     config.allowedGroupCiphers.clear();  
  5.     config.allowedKeyManagement.clear();  
  6.     config.allowedPairwiseCiphers.clear();  
  7.     config.allowedProtocols.clear();  
  8.     config.SSID = "\"" + SSID + "\"";  
  9.     if (Type == WifiCipherType.WIFICIPHER_NOPASS) {  
  10.         config.wepKeys[0] = "";  
  11.         config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
  12.         config.wepTxKeyIndex = 0;  
  13.     }  
  14.     if (Type == WifiCipherType.WIFICIPHER_WEP) {  
  15.         config.preSharedKey = "\"" + Password + "\"";  
  16.         config.hiddenSSID = true;  
  17.         config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);  
  18.         config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);  
  19.         config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);  
  20.         config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);  
  21.         config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);  
  22.         config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
  23.         config.wepTxKeyIndex = 0;  
  24.     }  
  25.     if (Type == WifiCipherType.WIFICIPHER_WPA) {  
  26.         config.preSharedKey = "\"" + Password + "\"";  
  27.         config.hiddenSSID = true;  
  28.         config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);  
  29.         config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);  
  30.         config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);  
  31.         config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);  
  32.         config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);  
  33.         config.status = WifiConfiguration.Status.ENABLED;  
  34.     } else {  
  35.         return null;  
  36.     }  
  37.     return config;  
  38. }  
打开或关闭wifi连接

[java] view plain copy
  1. // 打开WIFI  
  2. public boolean openWifi() {  
  3.     boolean bRet = true;  
  4.     if (!mWifiManager.isWifiEnabled()) {  
  5.         bRet = mWifiManager.setWifiEnabled(true);  
  6.     }  
  7.     return bRet;  
  8. }  
  9.   
  10. // 关闭WIFI  
  11. public void closeWifi() {  
  12.     if (mWifiManager.isWifiEnabled()) {  
  13.         mWifiManager.setWifiEnabled(false);  
  14.     }  
  15. }  
判断wifi是否成功连接

[java] view plain copy
  1. public boolean isWifiConnect() {     
  2.     ConnectivityManager mConnectivityManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);  
  3.     NetworkInfo mWifi = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);    
  4.     return mWifi.isConnected();    
  5. }  

原创粉丝点击