通过程序来实现wifi的自动连接。

这两天对android的wifi功能研究了一下。下面共享出自己封装的WifiConnect类。(这里参考了ZXing开源项目中wifi模块)

首先,要了解android关于wifi的API.

如果你喜欢看English API,这是android关于wifi的API地址:

http://developer.android.com/reference/android/net/wifi/package-summary.html(配置Wifi,还需要设定权限,android中关于wifi的API文档中说明了要添加什么权限)

如果你一看英语就头疼,这里有关于wifi的api的中文解释

http://note.sdo.com/u/1500295617/n/prb71~jGAHfpnM0l000bgN

切入正题,这里贴出一个封装了的类(WifiConnect),在实例化WifiConnect对象时,需要传入一个WifiManager对象。WifiConnect类向外部提供一个Connect方法,参数是无线的SSID,password,还有加密类型。

/**  WifiConnect.java*  Author: cscmaker*/
package com.wifi.connect;import java.util.List;import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.util.Log;public class WifiConnect {WifiManager wifiManager;//定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况public enum WifiCipherType{WIFICIPHER_WEP,WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID}//构造函数public WifiConnect(WifiManager wifiManager){this.wifiManager = wifiManager;}//打开wifi功能private boolean OpenWifi(){boolean bRet = true;if (!wifiManager.isWifiEnabled()){bRet = wifiManager.setWifiEnabled(true);  }return bRet;}//提供一个外部接口,传入要连接的无线网public boolean Connect(String SSID, String Password, WifiCipherType Type){if(!this.OpenWifi()){return false;}
//开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi
//状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句while(wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING ){try{//为了避免程序一直while循环,让它睡个100毫秒在检测……Thread.currentThread();Thread.sleep(100);}catch(InterruptedException ie){}}WifiConfiguration wifiConfig = this.CreateWifiInfo(SSID, Password, Type);//if(wifiConfig == null){return false;}WifiConfiguration tempConfig = this.IsExsits(SSID);if(tempConfig != null){wifiManager.removeNetwork(tempConfig.networkId);}int netID = wifiManager.addNetwork(wifiConfig);boolean bRet = wifiManager.enableNetwork(netID, false);  return bRet;}//查看以前是否也配置过这个网络private WifiConfiguration IsExsits(String SSID){List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks();for (WifiConfiguration existingConfig : existingConfigs) {if (existingConfig.SSID.equals("\""+SSID+"\"")){return existingConfig;}}return null; }private 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;}}

android Wifi自动连接相关推荐

  1. Android Wifi --自动连接指定SSID(各种加密方式均可)

    Android Wifi API参考网站这里写链接内容 1.开始先加入wifi权限 <uses-permission android:name="android.permission. ...

  2. Android Wi-Fi 自动连接至需要网页认证AP失败

    测试机打开Wi-Fi,连接至Test,关闭Wi-Fi再打开后不能自动重连至Test(其他open AP可以自动重连) 1 测试步骤 测试机打开Wi-Fi,连接至Test(为需要网页认证才能够使用的Wi ...

  3. Android 8.0/9.0 wifi 自动连接评分机制

    今天了解了一下Wifi自动连接时的评分机制,总结如下: WifiConnectivityManager的初始化: /frameworks/opt/net/wifi/service/java/com/a ...

  4. Android下自动连接指定SSID的WIFI的简单实现

    一.关于WiFi模块的概述: 1.在Android developer的文档中WiFi模块的信息: 首先,登记广播的监听:其次,请求扫描wifi信号:最后获取扫描到的wifi信息. 2.在广播监听到结 ...

  5. Android 10自动连接WiFi问题 Android 10 断开WiFi问题

    说明:本文主要说明扫码之后自动连接WiFi的一些处理,扫码的流程相对简单,网上教程也比较多,对于目前Android各个版本也没有太多变化. 问题描述:最近在做项目的时候,发现以前的项目有扫描二维码自动 ...

  6. QT Android wifi自动重连开发

    QT Android wifi自动重连开发 配置安卓wifi操作权限 通过监听QNetworkConfigurationManager信号判断WiFi是否失去连接 Java代码 QT代码 小米平板连接 ...

  7. 二维码WIFI自动连接生成格式

    http://mgz9057.blog.163.com/blog/static/31237253201519104039137/ 二维码WIFI自动连接生成格式 WIFI:T:WPA;S:MM;P:1 ...

  8. Wifi自动连接评分机制

    今天了解了一下Wifi自动连接时的评分机制,总结如下: WifiConnectivityManager的初始化: /frameworks/opt/net/wifi/service/java/com/a ...

  9. 鸿蒙系统不能自动连wifi,Hi3861_WiFi IoT工程:WiFi自动连接

    Hi3861_WiFi IoT工程:WiFi自动连接 这些天在研究软总线组件,因为要连接WiFi进行调试,如果按照官方文档的如下步骤进行操作,肯定不合适: 在社区上找到连志安老师的<Hi3861 ...

最新文章

  1. Tensorflow杂记
  2. python语言标号_Python 编码为什么那么蛋疼?
  3. mysql 按照指定字段拼接_mysql 根据某个字段将多条记录的某个字段拼接成一个字段...
  4. google圣诞节彩蛋
  5. 栈在括号匹配中的应用
  6. 来来来!2021最新Java面经分享
  7. python怎么保存为py文件_将python保存到运行的py文件目录中创建的文件夹中
  8. OpenResity + nginx + mysq配置
  9. Font Awesome图标字体
  10. My first essay
  11. 某烟草局绩效考核系统分析设计清单
  12. 【杂项】vmware fusion 流畅度设置
  13. xposed框架安装使用步骤
  14. 推箱子游戏的java设计思路_基于Java推箱子游戏的设计与实现
  15. html图像缩小失真,图像放大和缩小不失真的方法!
  16. 怎么使用计算机自带的摄像头拍视频,电脑怎么用摄像头录制视频
  17. Centos7操作系统搭建Snipe-IT资产管理系统
  18. Electron中的消息通知
  19. php 10到50的随机数,【单选题】php中以下能输出1到10之间的随机数的是( )
  20. 【优化充电】基于matlab遗传算法求解电动汽车充电统一管理优化问题(含负荷功率曲线对比图及充电计划)【含Matlab源码 2300期】

热门文章

  1. 二维码扫描+长按识别二维码demo
  2. 计算机专业的学习方法
  3. 第四范式发布「式说」大模型,以生成式AI重构企业软件(AIGS)
  4. 前端 sqllite sql.js
  5. 2022-我的秋招之旅
  6. 怎么比较两个字符串的大小?
  7. C语言中的if、else if 的用法和区别
  8. vs = VirtualService
  9. mvc原理和mvc模式的优缺点
  10. 教你几个提升网站快速排名的好方法