版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

概述

  实现连接WIFI的功能会用到一个工具类,源码可以点击链接下载。网上这些类似的工具类里的代码差不多是一样的。连接无线网主要有两个方法:
  其中有一个Connect方法,还有一个connectSpecificAP方法,对于不需要密码就能链接的WIFI模块,我使用的是后者。

主要步骤

连接WIFI大致分为一下几个步骤:
【1】打开WIFI
  openWifi
【2】配置网络信息
  createWifiInfo返回WIFiConfig
【3】添加配置好的网络并连接
  int netID = mWifiManager.addNetwork(wifiConfig);
  boolean bRet = mWifiManager.enableNetwork(netID, false);
【4】判断连接是否成功
  上面的enableNetWork方法返回成功并不能反映手机是否真的连接成功,所以还需要调用isConnect方法进行判断,针对自己的业务逻辑和场景,我又写了一个判断是否连接成功的方法:isWifiConnected的方法

应用

/**
* 手机接入模块的WIFI网络——BLACKANTS
*/
private void ConnectDisplay(){
//获得消息对象
Message msg=mainHandler.obtainMessage();
//是否连接成功的一个标记
Boolean isConnected=false;
//标志BLACKANTS的ScanResult是否存在,true存在,false不存在
Boolean isExist=false;
//用户存放BLACKANTS的WIFI信息
ScanResult srWifiInfo=null;
//声明一个用于临时存放SSID的变量
String strTempSSID; /******************以下一段代码主要是为了获得BLACKANTS的ScanResult(包括了它的SSID,BSSID,capabilities)*****************/
//扫描WIFI
wifiAdmin.startScan();
//获得WIFI列表
List<ScanResult> lstWiFi= wifiAdmin.getWifiList(); //如果WIFI列表为空,则说明WIFI开关未打开,向Handler发送消息
if(lstWiFi==null || lstWiFi.size()==0){
msg.what=NotOpen;
mainHandler.sendMessage(msg);
return;
} //如果列表存在,则对列表进行遍历
if(lstWiFi!=null & lstWiFi.size()>0){
//遍历列表,查看BLACKANTS是否存在
for(int i=0;i<lstWiFi.size();i++){
strTempSSID=lstWiFi.get(i).SSID;
//如果存在,则退出For循环
if((DisplaySSID).equals(strTempSSID.trim()) ){
//修改标志位为存在
isExist=true;
//将BLACKANTS的Wifi信息放入到变量srWifiInfo中
srWifiInfo=lstWiFi.get(i);
break;
}
}
}
/******************以上一段代码主要是为了获得BLACKANTS的ScanResult(包括了它的SSID,BSSID,capabilities)*****************/
//默认是失败
msg.what=Failure;
//如果存在,则让手机接入BLACKANTS-------------------V1.0
if(isExist){
if(wifiAdmin.connectSpecificAP(srWifiInfo)){
//判断是否连接上
if(wifiAdmin.isWifiConnected(InitActivity.this,DisplaySSID)){
msg.what=Success;
}
}
}
mainHandler.sendMessage(msg);
}

附:

下载工具类(WIFIAdmin)

 

【Android开发—智能家居系列】(三):手机连接WIFI模块的更多相关文章

  1. Android开发—智能家居系列】(二):用手机对WIFI模块进行配置

    在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的.有图为证,哈哈. 上一篇文章[Android开发—智能家居系列](一):智能家居原理的文末总结中写到: 手机APP控制智能温控器 ...

  2. 【Android开发—智能家居系列】(四):UDP通信发送指令

    思路回顾 [1]手机连接WIFI模块 [2]UDP通信对WIFI模块发送指令,以和WIFI模块保持连接状态 [3]UDP通信对WIFI模块发送指令,让其搜索可用的无线网,返回WIFI列表 [4]发送指 ...

  3. 【Android开发—智能家居系列】(一):智能家居原理

    来到JCZB公司的第二天,就接到了开发类似于小米智能家庭APP的任务.组长让我在手机上安装上此款APP,给了我个小米智能插座,就让我开始了解需求.这便开启了我的智能家居旅程.说实话,我也真是out的无 ...

  4. 基于Laravel+Swoole开发智能家居后端

    基于Laravel+Swoole开发智能家居后端 在上一篇<Laravel如何优雅的使用Swoole>中我已经大概谈到了Laravel结合Swoole的用法. 今天,我参与的智能家居项目基 ...

  5. 使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization)

    使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization) 前言: 这是 qt for python 的语言国际化,基于 UI 的,python 也有 ...

  6. 【Android开发VR实战】三.开发一个寻宝类VR游戏TreasureHunt

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53939303 本文出自[DylanAndroid的博客] [Android开发 ...

  7. [Android开发学iOS系列] 工具篇: Xcode使用和快捷键

    [Android开发学iOS系列] 工具篇: Xcode使用和快捷键 工欲善其事必先利其器. 编辑 Cmd + N: 新建文件 Option + Cmd + N: 新建文件夹 Cmd + / : 注释 ...

  8. [Android开发学iOS系列] iOS写UI的几种方式

    [Android开发学iOS系列] iOS写UI的几种方式 作为一个现代化的平台, iOS的发展也经历了好几个时代. 本文讲讲iOS写UI的几种主要方式和各自的特点. iOS写UI的方式 在iOS中写 ...

  9. [Android开发学iOS系列] Auto Layout

    [Android开发学iOS系列] Auto Layout 内容: 介绍什么是Auto Layout. 基本使用方法 在代码中写约束的方法 Auto Layout的原理 尺寸和优先级 Auto Lay ...

随机推荐

  1. 介绍几款移动的WebAPP框架

    如果是 Angular 那就选 Ionic (一对好 CP)如果是 Vue 那就选 Vux (基于 WeUI)如果是 jQuery 那就选 Framework7 (iOS 和 Android 双皮肤) ...

  2. mysql中常用函数简介(不定时更新)

    常用函数version() 显示当前数据库版本database() 返回当前数据库名称user() 返回当前登录用户名inet_aton(IP) 返回IP地址的数值形式,为IP地址的数学计算做准备in ...

  3. clipboard 在 vue 中的使用

    简介 页面中用 clipboard 可以进行复制粘贴,clipboard能将内容直接写入剪切板 安装 npm install --save clipboard 使用方法一 <template&g ...

  4. css3如何实现click后页面过渡滚动到顶部

    var getTop = document.getElementById("get-top"); var head = document.getElementById(" ...

  5. css 元素垂直居中

    通用 <div id="parent"> <div id="child">Content here</div> </d ...

  6. Python+unittest发送测试报告

    案例:将E:\Python_script\unittest\Test_Baidu生成的最新测试报告发送到指定邮箱. 我们将之前的unittest的报告生成和Python自动发送邮件结合在一起,就可以完 ...

  7. 神经网络的BP推导过程

    神经网络的BP推导过程 下面我们从一个简单的例子入手考虑如何从数学上计算代价函数的梯度,考虑如下简单的神经网络,该神经网络有三层神经元,对应的两个权重矩阵,为了计算梯度我们只需要计算两个偏导数即可: ...

  8. Codeforces Round #362 (Div. 2)

    闲来无事一套CF啊,我觉得这几个题还是有套路的,但是很明显,这个题并不难 A. Pineapple Incident time limit per test 1 second memory limit ...

  9. Method for Estimating the Number of Concurrent Users

    1. Formula for Estimating the Average Number of Concurrent users We begin by defining what the numbe ...

  10. Python 频繁读取Mysql相关问题

    1.需要频繁select大量数据,时间长.消耗内存大,如何解决mysql性能问题? 如果对返回的结果数量没有要求,可以控制返回的数量: cursor.fetchmany(size=1000) 这样是只 ...