Android學習筆記(十)WIFI設備


一、廢話

  很久沒有更新博客了,因為放假在家沒有網絡,直到前天才上班,昨晚去瀟灑了,今天開始繼續更新博客。在筆記九中介紹了藍牙設備,並在結尾的時候說了要介紹下WIFI設備的一些操作。

二、正文

  1、WIFI設備是個啥?

    WIFI是個啥?請移步至百度百科

  2、WIFI有哪些狀態?

    在Android的官方文檔中定義了如下五種狀態:

    • WIFI_STATE_DISABLED   WIFI網卡不可用 
    • WIFI_STATE_DISABLING  WIFI網卡正在關閉 
    • WIFI_STATE_ENABLED     WIFI網卡可用 
    • WIFI_STATE_ENABLING    WIFI網卡正在打開 
    • WIFI_STATE_UNKNOWN    WIFI網卡狀態不可知

  3、如何操作WIFI?

    要操作WIFI設備,就需要使用Context.getSystemService(Context.WIFI_SERVICE)來獲取WifiManager對象,並通過這個對象來管理我們的WIFI設備。

    • addNetwork(WifiConfiguration config) 添加一個config描述的WIFI網絡,默認情況下,這個WIFI網絡是DISABLE狀態的。
    • calculateSignalLevel(int rssi , int numLevels) 計算信號的等級
    • compareSignalLevel(int rssiA, int rssiB) 對比網絡A和網絡B的信號強度
    • createWifiLock(int lockType, String tag) 創建一個WIFI 鎖,鎖定當前的WIFI連接
    • disableNetwork(int netId) 讓一個網絡連接失效
    • disconnect() 斷開當前的WIFI連接
    • enableNetwork(int netId, Boolean disableOthers) 連接netId所指的WIFI網絡,並是其他的網絡都被禁用
    • getConfiguredNetworks() 獲取網絡連接的狀態
    • getConnectionInfo() 獲取當前連接的信息
    • getDhcpInfo() 獲取DHCP 的信息
    • getScanResulats() 獲取掃描測試的結果
    • getWifiState() 獲取當前WIFI設備的狀態
    • isWifiEnabled() 判斷WIFI設備是否打開
    • pingSupplicant() ping操作,和PC的ping操作相同作用
    • ressociate() 重新連接WIFI網絡,即使該網絡是已經被連接上的
    • reconnect() 重新連接一個未連接上的WIFI網絡
    • removeNetwork() 移除某一個網絡
    • saveConfiguration() 保留一個配置信息
    • setWifiEnabled() 讓一個連接有效
    • startScan() 開始掃描
    • updateNetwork(WifiConfiguration config) 更新一個網絡連接

  4、如何得到周圍的WIFI熱點列表?

     如果要想得到周圍的WIFI熱點列表,可以使用WifiManager.getScanResults()返回一個ScanResult列表,ScanResult對象中,包含了以下幾個屬性:

    • BSSID 接入點的地址
    • SSID 網絡的名字,唯一區別WIFI網絡的名字
    • Capabilities 網絡接入的性能
    • Frequency 當前WIFI設備附近熱點的頻率(MHz)
    • Level 所發現的WIFI網絡信號強度

  5、如何連接上我的WIFI?

 1 /**
2 * 根據ID值來自動連接WIFI網絡
3 * @param index ID值
4 */

5 public void ConnectWifiBySSID(int index) {
6 // 索引大於配置好的網絡索引返回
7 if (index > mWifiConfiguration.size()) {

8 return;
9 }
10 // 連接配置好的指定ID的網絡
11 mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,true);

12 }
13 /**
14 * 根據WifiConfiguration對象來自動連接WIFI網絡
15 * @param wcg WifiConfiguration對象
16 */

17 public void ConnectWifiByConfig(WifiConfiguration wifiConfiguration) {
18 int wcgID = mWifiManager.addNetwork(wifiConfiguration);
19 mWifiManager.enableNetwork(wcgID, true);
20 }

    沒什么好解釋的,可以直接看上面的代碼段。

  6、如何查看已經連接上的WIFI信息?

    在Android的SDK中為我們提供了一個叫做WifiInfo的對象,這個對象可以通過WifiManager.getConnectionInfo()來獲取。WifiInfo中包含了當前連接中的相關信息。

    • getBSSID()  獲取BSSID屬性
    • getDetailedStateOf()  獲取客戶端的連通性
    • getHiddenSSID()  獲取SSID 是否被隱藏
    • getIpAddress()  獲取IP 地址
    • getLinkSpeed()  獲取連接的速度
    • getMacAddress()  獲取Mac 地址
    • getRssi()  獲取802.11n 網絡的信號
    • getSSID()  獲取SSID
    • getSupplicanState()  獲取具體客戶端狀態的信息

三、總結

  以上就是WIFI的一些操作了,本來打算要介紹下Android中數據的傳輸的相關知識的,但是我由於數據傳輸還比較多,所以就放到明天的筆記中介紹了。

源碼下載


免責聲明!

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



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