android Wifi自动连接
通过程序来实现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自动连接相关推荐
- Android Wifi --自动连接指定SSID(各种加密方式均可)
Android Wifi API参考网站这里写链接内容 1.开始先加入wifi权限 <uses-permission android:name="android.permission. ...
- Android Wi-Fi 自动连接至需要网页认证AP失败
测试机打开Wi-Fi,连接至Test,关闭Wi-Fi再打开后不能自动重连至Test(其他open AP可以自动重连) 1 测试步骤 测试机打开Wi-Fi,连接至Test(为需要网页认证才能够使用的Wi ...
- Android 8.0/9.0 wifi 自动连接评分机制
今天了解了一下Wifi自动连接时的评分机制,总结如下: WifiConnectivityManager的初始化: /frameworks/opt/net/wifi/service/java/com/a ...
- Android下自动连接指定SSID的WIFI的简单实现
一.关于WiFi模块的概述: 1.在Android developer的文档中WiFi模块的信息: 首先,登记广播的监听:其次,请求扫描wifi信号:最后获取扫描到的wifi信息. 2.在广播监听到结 ...
- Android 10自动连接WiFi问题 Android 10 断开WiFi问题
说明:本文主要说明扫码之后自动连接WiFi的一些处理,扫码的流程相对简单,网上教程也比较多,对于目前Android各个版本也没有太多变化. 问题描述:最近在做项目的时候,发现以前的项目有扫描二维码自动 ...
- QT Android wifi自动重连开发
QT Android wifi自动重连开发 配置安卓wifi操作权限 通过监听QNetworkConfigurationManager信号判断WiFi是否失去连接 Java代码 QT代码 小米平板连接 ...
- 二维码WIFI自动连接生成格式
http://mgz9057.blog.163.com/blog/static/31237253201519104039137/ 二维码WIFI自动连接生成格式 WIFI:T:WPA;S:MM;P:1 ...
- Wifi自动连接评分机制
今天了解了一下Wifi自动连接时的评分机制,总结如下: WifiConnectivityManager的初始化: /frameworks/opt/net/wifi/service/java/com/a ...
- 鸿蒙系统不能自动连wifi,Hi3861_WiFi IoT工程:WiFi自动连接
Hi3861_WiFi IoT工程:WiFi自动连接 这些天在研究软总线组件,因为要连接WiFi进行调试,如果按照官方文档的如下步骤进行操作,肯定不合适: 在社区上找到连志安老师的<Hi3861 ...
最新文章
- Tensorflow杂记
- python语言标号_Python 编码为什么那么蛋疼?
- mysql 按照指定字段拼接_mysql 根据某个字段将多条记录的某个字段拼接成一个字段...
- google圣诞节彩蛋
- 栈在括号匹配中的应用
- 来来来!2021最新Java面经分享
- python怎么保存为py文件_将python保存到运行的py文件目录中创建的文件夹中
- OpenResity + nginx + mysq配置
- Font Awesome图标字体
- My first essay
- 某烟草局绩效考核系统分析设计清单
- 【杂项】vmware fusion 流畅度设置
- xposed框架安装使用步骤
- 推箱子游戏的java设计思路_基于Java推箱子游戏的设计与实现
- html图像缩小失真,图像放大和缩小不失真的方法!
- 怎么使用计算机自带的摄像头拍视频,电脑怎么用摄像头录制视频
- Centos7操作系统搭建Snipe-IT资产管理系统
- Electron中的消息通知
- php 10到50的随机数,【单选题】php中以下能输出1到10之间的随机数的是( )
- 【优化充电】基于matlab遗传算法求解电动汽车充电统一管理优化问题(含负荷功率曲线对比图及充电计划)【含Matlab源码 2300期】