Android Wifi開發(fā)
1.WIFI核心類WifiManager
public class WifiManager
extends Object
的java.lang.object
? android.net.wifi.WifiManager
這個(gè)類提供了管理Wi-Fi連接的所有方面的主要API。通過調(diào)用得到這個(gè)類的一個(gè)實(shí)例Context.getSystemService(Context.WIFI_SERVICE)。它涉及幾類產(chǎn)品:
配置網(wǎng)絡(luò)列表。該列表可以查看和更新,單個(gè)條目的屬性進(jìn)行修改。
當(dāng)前活動的Wi-Fi網(wǎng)絡(luò),如果有的話。連接可以建立或拆除,并且有關(guān)網(wǎng)絡(luò)的狀態(tài)的動態(tài)信息可以查詢。
接入點(diǎn)的掃描的結(jié)果,包含足夠的信息來什么接入點(diǎn)連接到?jīng)Q策。
它定義了在任何類型的Wi-Fi狀態(tài)變化的各種轉(zhuǎn)播意向動作的名稱。
?????Wi-Fi具體操作時(shí)要使用的API。要執(zhí)行一些與在抽象的層面與網(wǎng)絡(luò)連接操作,使用ConnectivityManager。
常用方法:
int addNetwork(WifiConfiguration config)添加一個(gè)新的網(wǎng)絡(luò)描述為一套配置網(wǎng)絡(luò)。
boolean disableNetwork(int netId)禁用配置的網(wǎng)絡(luò)。
boolean disconnect()從當(dāng)前活動的接入點(diǎn)撇清。
boolean enableNetwork(int netId, boolean disableOthers)允許之前配置的網(wǎng)絡(luò)與關(guān)聯(lián)。
List?getConfiguredNetworks()返回請求者配置的所有網(wǎng)絡(luò)的列表。
WifiInfo getConnectionInfo()返回有關(guān)當(dāng)前Wi-Fi連接的動態(tài)信息,如果有的話是積極的。
DhcpInfo getDhcpInfo()從最后一次成功DHCP請求返回DHCP分配的地址,如果有的話。
List?getScanResults()返回最新的接入點(diǎn)掃描的結(jié)果。
int getWifiState()獲取Wi-Fi功能的狀態(tài)。
boolean isWifiEnabled()返回的Wi-Fi是否已啟用或禁用。
boolean reconnect()重新連接到當(dāng)前活動的訪問點(diǎn)上,如果我們目前正在斷開。
boolean removeNetwork(int netId)從配置網(wǎng)絡(luò)的列表中刪除指定的網(wǎng)絡(luò)。
boolean setWifiEnabled(boolean enabled)啟用或禁用無線網(wǎng)絡(luò)連接。
boolean startScan()請求接入點(diǎn)的掃描。
int updateNetwork(WifiConfiguration config)更新現(xiàn)有配置的網(wǎng)絡(luò)的網(wǎng)絡(luò)描述。
2.添加權(quán)限

3.開始wifi功能

4.在onCreate方法中添加wifi狀態(tài)監(jiān)聽器
????????4.1.注冊廣播監(jiān)聽器

????????4.2.廣播接收者

????????4.3.記得廣播的取消注冊監(jiān)聽
5.關(guān)閉WiFi
6.添加并連接wifi
????????6.1點(diǎn)擊連接wifi

????????6.2在wifiHelper中實(shí)現(xiàn)addNetWorkWAP這個(gè)方法

????????6.3創(chuàng)建一個(gè)wifi配置信息

7.測試網(wǎng)絡(luò)(使用Ping命令來測試)
通過直接Ping一個(gè)網(wǎng)站來測試該wifi是否有網(wǎng)絡(luò)

8.斷開某個(gè)已經(jīng)連接的wifi

9.搜索附近的wifi
在Android6.0以后,默認(rèn)是搜索不要附近WIFI的列表的,需要將其APP加載到系統(tǒng)的APP安裝目錄(/system/app)下,也可以添加如下權(quán)限,但是該權(quán)限需要用戶設(shè)置同意,所以我們可以引導(dǎo)用戶去啟動位置的權(quán)限。
在添加如下權(quán)限后,還需要提示用戶讓其打開手機(jī)的gps信號開關(guān),否則將無法獲取wifi列表。

????????9.1掃描附近wifi

????????9.2實(shí)現(xiàn)點(diǎn)擊收索wifi

????????9.3編寫WifiAdatper

10.點(diǎn)擊連接附近wifi
????????10.1點(diǎn)擊搜索出來的wifi

????????10.2初始化一個(gè)輸入密碼的對話框

????????10.3在item點(diǎn)擊事件中彈出對話框:

????????10.4在wifiHelper中添加checkAuth方法,用來檢查掃描出來的wifi是否需要密碼

????????10.5在wifiHelper中添加了方法connectSavedWifi,用來重連先前已經(jīng)連接過的wifi:

????????10.6彈出對話框供用戶輸入密碼:
