2012-07-05 75 views
4

我想跟蹤wifi設置代碼。我的意圖是在將WIFI按鈕切換到ON之後知道從應用程序到內核層的流程。安卓無線網絡流量

當我們轉到Android的設置頁面時,切換WLAN(WIFI)按鈕,然後 您的wifi應該啓用。

  1. 我發現這個頁面對應於WifiSettings.java。在此文件中,當您將按鈕從OFF切換到ON時:

    private void updateWifiState(int state) { 
    
    getActivity().invalidateOptionsMenu(); 
        switch (state) { 
         case WifiManager.WIFI_STATE_ENABLING: 
         addMessagePreference(R.string.wifi_starting); 
         break; 
    } 
    
    mLastInfo = null; 
    mLastState = null; 
    mScanner.pause();   
    } 
    

    此功能將被調用。

  2. 然後我去檢查WifiManager.java。我發現:

    /** 
    * Wi-Fi is currently being enabled. The state will change to 
        {@link#WIFI_STATE_ENABLED} 
    if it finishes successfully. 
    * 
    * @see #WIFI_STATE_CHANGED_ACTION 
    * @see #getWifiState() 
    */ 
    
    public static final int WIFI_STATE_ENABLING = 2; 
    

然而,在此之後,我真的不知道如何追查流越挖越深。

+0

任何人?任何線索都會有所幫助。 – Sam 2012-07-06 01:39:20

回答

1

你應該看看WifiEnabler.java,因爲你提到的代碼只是顯示了一些字符串。 在WifiEnabler::onCheckChanged()中,您可以看到調用了mWifiManager.setWifiEnabled()

之後,您可以查看該目錄中的WifiManager.java和其他相關文件。有一個狀態機,你應該跟蹤狀態轉換。

一般來說,Android使用的是wpa_supplicant,與Linux幾乎相同。配置文件位於/data/misc/wifi/wpa_supplicant.conf,由Android生成。在切換wifi開關後,Android啓動wpa_supplicant並與之通信。 wpa_supplicant負責掃描並連接到wifi站點。

+0

謝謝你。我喜歡你的答案。給我一個提示就夠了。 :) – Sam 2012-08-20 02:18:42