WifiService
1 位置 : frameworks\opt\net\wifi\service\java\com\android\server\wifi
实际工作交给WifiServiceImpl处理。
2 实现了 IWifiManager接口 。
getWifiEnabledState方法
WifiState 有4种状态:
public static final int WIFI_STATE_DISABLED = 1;
public static final int WIFI_STATE_DISABLING = 0;
public static final int WIFI_STATE_ENABLED = 3;
public static final int WIFI_STATE_ENABLING = 2;
public static final int WIFI_STATE_UNKNOWN = 4;
com.android.server.wifi.ClientModeImpl#mWifiState
mWifiState 的设置是在 : ClientModeImpl#setWifiStateForApiCalls
而只有
com.android.server.wifi.ClientModeManager#updateConnectModeState
调用 ClientModeImpl#setWifiStateForApiCalls 。
比如 WIFI_STATE_ENABLED,
只有在ClientModeManager 的 ConnectModeState 这个类调用
这个是状态机,那我们就来分析如何进入这个ConnectModeState状态的。
是在StartedState 收到 CMD_SWITCH_TO_CONNECT_MODE 之后进入ConnectModeState 状态,
CMD_SWITCH_TO_CONNECT_MODE 是哪里发来的?
是在com.android.server.wifi.ClientModeManager#setRole 这个方法。
那是哪里调用setRole呢?
这个值最终是持久化到 WifiSettingsStore 中的,只是代表客户端的状态。