【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)

文章导航