我正在尝试跟踪 wifi 设置代码。我的目的是了解将 WIFI 按钮从 OFF 切换到 ON 后从应用程序到内核层的流程。
当我们进入 Android 的设置页面时,切换 WLAN(WIFI) 按钮,然后 您的 wifi 应该已启用。
我发现这个页面对应的是
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(); }
这个函数会被调用。
然后我去检查
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;
但是,经过这件事之后,我并没有真正理解如何在tracing the flow上进行更深入的挖掘。
最佳答案
您应该查看 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站。
关于安卓Wifi流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11341964/