【Android开发—智能家居系列】(三):手机连接WIFI模块

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

目录(?)[+]

概述

  实现连接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)

时间: 2024-11-07 00:04:42

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

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

在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的.有图为证,哈哈. 上一篇文章[Android开发-智能家居系列](一):智能家居原理的文末总结中写到: 手机APP控制智能温控器就两步:一是通过手机,让WIFI模块接入网络,而是通过网络,使用手机对模块发送指令.在这篇文章中,我们来介绍第一个步骤. [时序图] [概念] [两种模式]: AP:即无线接入点,是一个无线网络的中心节点.通常使用的无线路由器就是一个AP,其它无线终端可以通过AP相互连接. STA:即无线站点,是一

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

思路回顾 [1]手机连接WIFI模块 [2]UDP通信对WIFI模块发送指令,以和WIFI模块保持连接状态 [3]UDP通信对WIFI模块发送指令,让其搜索可用的无线网,返回WIFI列表 [4]发送指令,让WIFI模块接入指定路由 [5]手机连接路由 [6]发送指令,获得WIFI模块的动态IP地址 UDP通信线程类 package com.jczb.smartlife.common; import java.io.IOException; import java.net.DatagramPack

ZigBee与Android的智能家居控制系统设计

智能家居是在传统住宅的基础上,利用现代科学技术,诸如网络通信.安全防范.自动控制.音视频等技术将家居生活有关的各种家居设施集成,构成的高效.便利.舒适.节能环保的家居环境.随着无线移动网络的快速布局,现代的智能家居只要有一个无线智能设备,即能通过客户端实时查看到住宅中的一切动态.在目前,智能家居控制系统中,有基于面板和红外遥控器或蓝牙的智能家居控制终端解决方案,也有完全基于PC机的智能家居控制终端解决方案,同时还有采用手机作为家居控制终端,利用GSM电话网络通信,实现短信或者语音控制.而以上多种

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

基于Laravel+Swoole开发智能家居后端 在上一篇<Laravel如何优雅的使用Swoole>中我已经大概谈到了Laravel结合Swoole的用法. 今天,我参与的智能家居项目基本上已经结束了Web服务器及android端的开发(熬了个通宵突击把剩下的做了,好累), 趁热来聊聊基于Laravel+Swoole开发智能家居后端的关键技术点. 16进制ASCII码协议的解析 硬件我不谈,我只需要关心数据解析.如何基于Swoole如果在php中解析16进制的ascii码,这种文章还比较少呢

Cocos2d-x创建android项目(cocos2d-x系列三)

不例外.最显眼的就是,在文件的根目录中增加了一个名为setup.py的配置文件.运行它可以配置系统的一些环境变量. 2.创建项目 新的版本我们来动手创建一个新项目吧.找到tools文件夹....额 打包的那个名为create-project.py的文件似乎木有了!原来,在新版本中,创建新项目已经可以通过命令行来创建了,相对于先前版本的图形界面,命令行更简洁.我们要在setup.py中设置参数.以mac平台为例,我们进入到对应目录,运行脚本setup.py: Setting up cocos2d-

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

使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization) 前言: 这是 qt for python 的语言国际化,基于 UI 的,python 也有自身的语言国际化,两者是不同的. 先来看最终效果: 前期准备: 这次创建一个 main window 在 menu bar 加一个 language 的 menu: 我们还要对 action 进行一些设置,如下: 生成 .py 文件: 生成代码: 1 # -*- coding: utf-8 -*-

Android 开发技巧总结(三)

1.在界面中按返回键判断某个控件的可见性,如果可见,则用动画让其消失,应用并不退出. Onkeydown方法中: if(keyCode == 4){ if(slidingMenu.getVisibility() == View.VISIBLE){ //退出的动画 AnimationSet animationSet = new AnimationSet(true); TranslateAnimation animation = new TranslateAnimation(0,-280, 0, 0

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

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53939303 本文出自[DylanAndroid的博客] [Android开发VR实战]三.开发一个寻宝类VR游戏TreasureHunt VR即Virtual Reality虚拟现实.虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中. 那么,如何在Androi

手机连接WiFi有感叹号x怎么回事?如何消除手机WiFi感叹号?

经过多年的革新,现在的安卓系统已经非常优秀了,某些程度已经超越iOS,卡顿和耗电也不再是安卓系统的代名词了.而为了体验到最优秀的安卓系统,不少人都会购买海外的手机,因为海外手机的安卓系统都比较精简,非常接近原生系统的体验.不过这些系统在国内使用会出现一些小情况,被大家吐槽最多的莫过于手机连接WiFi出现感叹号或者出现一个小"×"了. 有些人就奇怪了,明明手机连上WiFi是可以正常上网的,为什么会出现感叹号或者"×"呢?让POPPUR来告诉大家吧,其实早在Androi