空祖家的 Wifi 连接封装库,适用于智能硬件 Wifi 连接通讯

  1. 查找附近 Wifi(不推荐,部分国产系统对此功能做了限制,建议参考《连接》章节的“对于已知类型的 Wifi 的连接方式”)

wifiUtil.scan(new OnWifiScanListener() {

@Override

public void onScan(List result) {

//自行处理 result

}

});

  1. 停止查找

wifiUtil.stopScan();

连接

对于未知类型的 Wifi,需要先进行查找附近的 Wifi,然后执行:

wifiUtil.link(ssid, password, new OnWifiConnectStatusChangeListener() {

@Override

public void onStatusChange(boolean isSuccess, int statusCode) {

//根据 statusCode 判断连接状态

switch (statusCode){

case ERROR_DEVICE_NOT_HAVE_WIFI:

txtLog.setText(“错误:设备无 Wifi”);

break;

case ERROR_CONNECT:

txtLog.setText(“错误:连接失败”);

break;

case ERROR_CONNECT_SYS_EXISTS_SAME_CONFIG:

txtLog.setText(“错误:设备已存在相同 Wifi 配置”);

break;

case ERROR_PASSWORD:

txtLog.setText(“错误:密码错误”);

break;

case CONNECT_FINISH:

txtLog.setText(“已连接”);

break;

case DISCONNECTED:

txtLog.setText(“已断开连接”);

break;

}

}

@Override

public void onConnect(WifiInfo wifiInfo) {

//连接完成后获取 Wifi 信息

}

});

对于已知类型的 Wifi,使用以下连接方式:

wifiUtil.link(ssid, password, WifiAutoConnectManager.WifiCipherType.WIFICIPHER_WPA,

new OnWifiConnectStatusChangeListener() {

@Override

public void onStatusChange(boolean isSuccess, int statusCode) {

switch (statusCode){

case ERROR_DEVICE_NOT_HAVE_WIFI:

txtLog.setText(“错误:设备无 Wifi”);

break;

case ERROR_CONNECT:

txtLog.setText(“错误:连接失败”);

break;

case ERROR_CONNECT_SYS_EXISTS_SAME_CONFIG:

txtLog.setText(“错误:设备已存在相同 Wifi 配置”);

break;

case ERROR_PASSWORD:

txtLog.setText(“错误:密码错误”);

break;

case CONNECT_FINISH:

txtLog.setText(“已连接”);

break;

case DISCONNECTED:

txtLog.setText(“已断开连接”);

break;

}

}

@Override

public void onConnect(WifiInfo wifiInfo) {

//连接完成后获取 Wifi 信息

}

}

);

返回值中,isSuccess 代表是否成功连接,statusCode 表示了所处的状态,状态值对应含义如下:

ERROR_DEVICE_NOT_HAVE_WIFI = -1; //设备无 Wifi 模块

ERROR_CONNECT = -2; //连接失败

ERROR_CONNECT_SYS_EXISTS_SAME_CONFIG = -3; //连接失败:系统已存在相同 Wifi 配置(需手动删除已存储连接)

ERROR_PASSWORD = -11; //密码错误

CONNECT_START = 1; //开始连接

CONNECT_FINISH = 2; //已连接

DISCONNECTED = 3; //已断开连接

额外方法:

//断开连接

wifiUtil.disconnect();

需要注意

请在 Activity 退出时执行 close() 方法:

@Override

protected void onDestroy() {

wifiUtil.close();

super.onDestroy();

}

⚠ 警告!请勿以 statusCode 状态为主进行判断,因为这个吃的是系统广播回调,不准,要知道连不连成功的判断方法是检查 onConnect 有没有执行。

另外我们注意到某些设备在附近没有要连接的 Wifi 的情况下,会主动重新连接之前连接的 Wifi,此
时也会走 CONNECT_FINISH 回调,同时 onConnect 也会执行,这种问题的解决方法是判断:

@Override

⚠ 警告!请勿以 statusCode 状态为主进行判断,因为这个吃的是系统广播回调,不准,要知道连不连成功的判断方法是检查 onConnect 有没有执行。

另外我们注意到某些设备在附近没有要连接的 Wifi 的情况下,会主动重新连接之前连接的 Wifi,此[外链图片转存中…(img-pBasFeQG-1643195433460)]
时也会走 CONNECT_FINISH 回调,同时 onConnect 也会执行,这种问题的解决方法是判断:

@Override

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值