一、廢話
很久沒有更新博客了,因為放假在家沒有網絡,直到前天才上班,昨晚去瀟灑了,今天開始繼續更新博客。在筆記九中介紹了藍牙設備,並在結尾的時候說了要介紹下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中數據的傳輸的相關知識的,但是我由於數據傳輸還比較多,所以就放到明天的筆記中介紹了。
【源碼下載】