4

wifi設定コードをトレースしようとしています。私の意図は、WIFIボタンをオフからオンに切り替えた後、アプリケーションからカーネル層への流れを知ることです。

Android の [設定] ページに移動し、[WLAN (WIFI)] ボタンを切り替えて、wifi を有効にする必要があります。

  1. このページは に対応していることがわかりましたWifiSettings.java。このファイルで、ボタンをオフからオンに切り替えている間:

    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その後、そのディレクトリ内の およびその他の関連ファイルを見ることができます。ステート マシンがあり、状態遷移をトレースする必要があります。

一般的に、Android はwpa_supplicantLinux とほぼ同じ を使用しています。設定ファイルは に/data/misc/wifi/wpa_supplicant.confあり、Android によって生成されます。Wi-Fi スイッチを切り替えると、Android が起動wpa_supplicantして通信します。はwpa_supplicant、wifi ステーションのスキャンと接続を担当します。

于 2012-08-15T00:54:46.377 に答える