4

我正在尝试跟踪 wifi 设置代码。我的目的是在将 WIFI 按钮关闭到打开后了解从应用程序到内核层的流程。

当我们进入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;
    

但是,在这之后,我并没有真正理解如何深入挖掘追踪流程。

4

1 回答 1

1

你应该看看WifiEnabler.java,因为你提到的代码只是显示了一些字符串。在WifiEnabler::onCheckChanged()中,您可以看到它mWifiManager.setWifiEnabled()被称为。

之后,您可以查看WifiManager.java该目录中的其他相关文件。有一个状态机,您应该跟踪状态转换。

一般安卓都是用wpa_supplicant的,跟Linux差不多。配置文件位于/data/misc/wifi/wpa_supplicant.conf,由 Android 生成。切换 wifi 开关后,Android 将启动wpa_supplicant并与之通信。wpa_supplicant负责扫描和连接wifi站。

于 2012-08-15T00:54:46.377 回答