Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android wifi連接

Android wifi連接

編輯:關於Android編程

關於wifi的連接部分,這裡分了三個步驟:   1.開啟WiFi       ·用戶在設置界面開啟WiFi,調用Settings應用程序的WifiEnabler.setWifiEnabled,然後調用WifiManager.setWifiEnabled。     ·WifiManager.setWifiEnabled通過Binder機制調用WifiService.setWifiEnabled。這裡的WifiService也就是WiFi的Java層的內容。     ·WifiService.setWifiEnabled將MESSAGE_ENABLE_WIFI消息發送到自己的消息隊列。     ·WifiService通過WifiHandler的handleMessage處理MESSAGE_ENABLE_WIFI,調用setWifiEnabledBlocking。setWifiEnabledBlocking調用setWifiEnabledState,向外發出WIFI_STATE_CHANGED_ACTION通知消息。另外,它還完成一些初始工作,如設置當前狀態、加載WiFi驅動、開啟wpa_supplicant、開啟WifiStateTracker、注冊BroadcastReceiver監視WifiStateTracker的消息等。這些內容在WifiService.java中。     ·由於WifiEnabler初始化時注冊了BroadcastReceiver,因此它會獲得這個通知消息,進入handleWifiStateChanged處理一些內部狀態以及顯示。     ·WifiLayer也同樣獲得了這個通知消息,至此,WiFi開啟完成。     2.查找AP      WiFi查找AP的過程如下:     ·Settings應用程序的WifiLayer.attemptScan調用WifiManager.startScan。     ·Settings應用程序的WifiManager.startScan通過Binder機制調用WifiService.startScan。     ·WiFi服務層的WifiServiceWifiNative.scanCommand通過WifiNative發送掃描命令給wpa_command來完成這一發送過程。至此,命令發送成功。     ·命令的最終響應由wpa_supplicant上報“SCAN-RESULTS”消息,WifiStateTracker開啟的WifiMonitor的MonitorThread可以獲取次消息並交由handleEvent處理。     ·handleEvent的處理方式是調用WifiStateTracker.notifyScanResultsAvailable。     ·在WifiStateTracker中,通過EVENT_SCAN_RESULTS_AVAILABLE完成消息傳遞,調用sendScanResultsAvailable將SCAN_RESULTS_AVAILABLE_ACTION通知消息廣播出去。     ·WifiLayer會最終獲得這個通知消息,調用handleScanResultsAvailable繼續處理。次函數會根據返回的AP數據建立對應的處理結構,並完成對應界面的繪制,以供用戶操作AP列表。至此,AP查找完成,也完成了一次典型的自上而下、再自下而上的情景。     3.連接AP      WiFi連接AP的步驟如下:     ·單擊AP列表的某個項目後,會彈出AccessPointDialog對話框,單擊“連接”按鈕,將handleConnect轉化為到WifiLayer.connectToNetwork的調用。     ·在connectToNetwork中完成一些查找和配置,再通過managerEnableNetwork調用WifiManager.enableNetwork。     ·連接的中間流程與查找AP的流程類似,都經過了WifiMonitor對“CONNECTED”消息響應的捕獲,以及WifiStateTracker對EVENT_SUPPLICANT_STATE_CHANGED的處理。還有一個比較重要的步驟是WifiStateTracker通過對DHCP服務器的申請進行了IP地址分配。最終會廣播NETWORK_STATE_CHANGED_ACTION消息,有WifiLayer響應。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved