随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。

转自: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 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. }  

 

 

 

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 简单介绍安卓的五大布局
  3. 在SOUI中使用网格布局
  4. SparseArray详解,我说SparseArray,你说要!
  5. 使用JTDS连接sqlserver数据库
  6. Android(安卓)studio 3.0.1 莫名其妙 R报错啦!(check logs for det
  7. Android用Intent启动Activity的方法
  8. ProGuard惯用法
  9. Android开发 Fiddler抓包工具简介

随机推荐

  1. MySQL系列-表是如何组成的?
  2. 那个做外包的程序员,最后去哪里了?(二)
  3. echarts地图下钻
  4. MySQL系列-DML语句
  5. MySQL系列-DML语句之select多表连接查询
  6. select使用方法
  7. MySQL系列-物理存储结构和索引算法
  8. 思迈特软件Smartbi智能电子表格,为你轻松
  9. MySQL系列-InnoDB索引介绍和管理
  10. 思迈特软件Smartbi:做好招聘分析,HR必知的