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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM