一、WifiService相关接口
IWifiManager
IWifiManager文件路径:
packages/modules/Wifi/framework/java/android/net/wifi/IWifiManager.aidl
IWifiManager定义:
interface IWifiManager {}
ClientMode
ClientMode文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/ClientMode.java
ClientMode定义:
public interface ClientMode {}
ISupplicantStaIfaceHal
ISupplicantStaIfaceHal 文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/ISupplicantStaIfaceHal.java
ISupplicantStaIfaceHal 定义:
interface ISupplicantStaIfaceHal {}
IHostapdHal
Abstraction of HAL interface.
IHostapdHal文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/IHostapdHal.java
IHostapdHal定义:
interface IHostapdHal{}
二、WifiService相关类
WifiService相关
WifiService
WifiService是Android Framework中负责Wi-Fi功能的核心服务。它主要借助wpa_supplicant(简称WPAS)和wificond来管理和控制Android平台的Wi-Fi功能。WifiService 继承SystemService,包名com.android.service.wifi,其构造函数初始化一个WifiServiceImpl 对象。
WifiService文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiService.java
WifiService定义:
public class WifiManager {}
WifiServiceImpl
WifiService 通过实现 IWifiManager 接口来处理远程 WiFi 操作请求,WifiServiceImpl包括BaseSoftApTracker、TetheredSoftApTracker、LohsSoftApTracker子类。
WifiServiceImpl文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
WifiServiceImpl定义:
public class WifiServiceImpl extends BaseWifiService {}
public abstract class SoftApCallbackInternal {} //The wrapper of SoftApCallback is used in WifiService internally.
private class BaseSoftApTracker extends SoftApCallbackInternal {}
private final class TetheredSoftApTracker extends BaseSoftApTracker {}
private final class LohsSoftApTracker extends BaseSoftApTracker {}
}
BaseWifiService
BaseWifiService文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/BaseWifiService.java
BaseWifiService定义:
public class BaseWifiService extends IWifiManager.Stub {}
AP相关
SoftApManager
Manage WiFi in AP mode.The internal state machine runs under the ClientModeImpl handler thread context.
SoftApManager文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/SoftApManager.java
SoftApManager定义:
public class SoftApManager implements ActiveModeManager {
private class SoftApStateMachine extends StateMachine {
private class IdleState extends State {}
private class StartedState extends State {}
}
}
WifiApConfigStore
Provides API for reading/writing soft access point configuration.
提供用于读写软接入点配置的 API。
WifiApConfigStore文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiApConfigStore.java
WifiApConfigStore定义:
public class WifiApConfigStore {}
SoftApModeConfiguration
Object holding the parameters needed to start SoftAp mode.
保存启动 SoftAp 模式所需参数的对象。
SoftApModeConfiguration文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/SoftApModeConfiguration.java
SoftApModeConfiguration定义:
class SoftApModeConfiguration {}
NetworkFactory相关
WifiNetworkFactory
Network factory to handle trusted wifi network requests.
网络工厂处理受信任的wifi网络请求。
WifiNetworkFactory是一个继承自NetworkFactory的类,它是WifiStateMachine中用于处理网络请求的一个重要组件。当Wifi状态机初始化处于默认状态时,会注册WifiNetworkFactory,然后所有的NetworkFactory都会注册到ConnectivityService才能参与评分机制。WifiNetworkFactory会根据评分机制来判断当前网络的优先级,如果当前网络优先级高于其他网络的优先级,就会触发连接建立流程,并将标记NetworkRequestInfo.requested=true。当NetworkRequestInfo被requested过(也就是当前网络被needNetworkFor过),此时如果再次收到请求,并且携带的新score大于当前NetworkFactory所处网络的mScore,那么就说明当前NetworkFactory所在网络优先级已经不是最高,需要将其releaseNetworkFor掉,并标记NetworkRequestInfo.requested=false。
WifiNetworkFactory文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/NetworkFactory.java
WifiNetworkFactory定义:
public class WifiNetworkFactory extends NetworkFactory {}
UntrustedWifiNetworkFactory
Network factory to handle untrusted wifi network requests.
网络工厂处理不受信任的 wifi 网络请求。
UntrustedWifiNetworkFactory文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/UntrustedWifiNetworkFactory.java
UntrustedWifiNetworkFactory定义:
public class UntrustedWifiNetworkFactory extends NetworkFactory {}
RestrictedWifiNetworkFactory
Network factory to handle restricted wifi network requests.
网络工厂处理受限制的 wifi 网络请求。
RestrictedWifiNetworkFactory文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/RestrictedWifiNetworkFactory.java
RestrictedWifiNetworkFactory定义:
public class RestrictedWifiNetworkFactory extends NetworkFactory {}
OemWifiNetworkFactory
Network factory to handle oem paid/private wifi network requests.
网络工厂处理OEM付费/私人wifi网络请求。
OemWifiNetworkFactory文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/OemWifiNetworkFactory.java
OemWifiNetworkFactory定义:
public class OemWifiNetworkFactory extends NetworkFactory {}
MultiInternetWifiNetworkFactory
Network factory to handle multi internet wifi network requests.
网络工厂处理多互联网wifi网络请求。
MultiInternetWifiNetworkFactory文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/MultiInternetWifiNetworkFactory.java
MultiInternetWifiNetworkFactory定义:
public class OemWifiNetworkFactory extends NetworkFactory {}
WifiNetworkAgent相关
WifiNetworkAgent
WifiNetworkAgent是Android系统中的一个类,它是通过子类继承的方式去实现的,和NetworkFactory类似。它的主要作用是作为Wifi连接的代理,负责和ConnectivityService通信,同时也负责处理Wifi连接的相关事件。在Wifi连接过程中,WifiNetworkAgent会被创建并注册到ConnectivityService中,然后通过asyncChannel建立起WifiStateMachine和ConnectivitySerivce通信的桥梁。在Wifi连接过程中,WifiNetworkAgent会接收到一些消息,比如EVENT_REGISTER_NETWORK_AGENT消息,然后根据这些消息来更新Wifi连接的状态。同时,WifiNetworkAgent也会向ConnectivityService发送一些消息,比如EVENT_NETWORK_AGENT_VALIDATED消息,来通知ConnectivityService当前Wifi连接的状态。
WifiNetworkAgent文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiNetworkAgent.java
WifiNetworkAgent定义:
public class WifiNetworkAgent extends NetworkAgent {}
ClientMode相关
ClientModeManager
ClientModeManager 文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/ClientModeManager.java
ClientModeManager 定义:
public interface ClientModeManager extends ActiveModeManager, ClientMode {}
ConcreteClientModeManager
Manage WiFi in Client Mode where we connect to configured networks and in Scan Only Mode where we do not connect to configured networks but do perform scanning.
在客户端模式下管理 WiFi,我们连接到已配置的网络,在仅扫描模式下,我们不连接到配置的网络,但执行扫描。
ConcreteClientModeManager文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/ConcreteClientModeManager.java
ConcreteClientModeManager定义:
public class ConcreteClientModeManager implements ClientModeManager {
private class DeferStopHandler extends Handler {}
private static class RoleChangeInfo {}
private static class Graveyard {}
private class ClientModeStateMachine extends StateMachine {
private class IdleState extends State {}
private class StartedState extends State {}
private class ScanOnlyModeState extends State {}
}
}
ClientModeImpl
Implementation of ClientMode. Event handling for Client mode logic is done here, and all changes in connectivity state are initiated here.
客户端模式的实现。 客户端模式逻辑的事件处理在此处完成,连接状态的所有更改都在此处启动。
ClientModeImpl文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/ClientModeImpl.java
ClientModeImpl定义:
public class ClientModeImpl extends StateMachine implements ClientMode {
class McastLockManagerFilterController implements WifiMulticastLockManager.FilterController {}
class IpClientCallbacksImpl extends IpClientCallbacks {}
private class OnNetworkUpdateListener implements WifiConfigManager.OnNetworkUpdateListener {}
private class OnCarrierOffloadDisabledListener implements WifiCarrierInfoManager.OnCarrierOffloadDisabledListener {}
class ConnectableState extends State {}
private class WifiNetworkAgentCallback implements WifiNetworkAgent.Callback {}
class ConnectingOrConnectedState extends State {}
class L2ConnectingState extends State {}
class L2ConnectedState extends State {}
class L3ProvisioningState extends State {}
class RoamingState extends State {}
class L3ConnectedState extends State {}
class DisconnectedState extends State {}
private class WifiVcnNetworkPolicyChangeListener implements VcnManager.VcnNetworkPolicyChangeListener {}
}
ActiveMode相关
ActiveModeManager
Base class for available WiFi operating modes. Currently supported modes include Client, ScanOnly and SoftAp.
可用 WiFi 操作模式的基类。目前支持的模式包括客户端、扫描和软AP。
ActiveModeManager文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/ActiveModeManager.java
ActiveModeManager定义:
public interface ActiveModeManager {}
ActiveModeWarden
This class provides the implementation for different WiFi operating modes.
此类提供不同 WiFi 操作模式的实现,它有几个内部类,其中WifiController是一个状态机,用户Wifi相关状态控制,ClientListener和SoftApListener是两个监听器,分发用于监听Wifi状态变化和SoftAP状态变化。
ActiveModeWarden文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/ActiveModeWarden.java
ActiveModeWarden定义:
public class ActiveModeWarden {
private class SoftApListener implements ActiveModeManager.Listener<SoftApManager> {}
private class ClientListener implements ActiveModeManager.Listener<ConcreteClientModeManager> {}
private class WifiController extends StateMachine {
abstract class BaseState extends State {}
class DefaultState extends State {}
class DisabledState extends BaseState {}
class EnabledState extends BaseState {}
}
}
Connectivity相关
WifiConnectivityManager
This class manages all the connectivity related scanning activities.
此类管理所有与连接相关的扫描活动。
WifiConnectivityManager文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiConnectivityManager.java
WifiConnectivityManager定义:
public class WifiConnectivityManager {}
ConnectHelper
ConnectHelper文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/ConnectHelper.java
ConnectHelper定义:
public class ConnectHelper {}
MakeBeforeBreakManager
Manages Make-Before-Break connection switching.
管理先成后断的连接切换。
MakeBeforeBreakManager文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/MakeBeforeBreakManager.java
MakeBeforeBreakManager定义:
public class MakeBeforeBreakManager {}
MemoryStoreImpl
Connects WifiScoreCard to IpMemoryStore.
MemoryStoreImpl文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/MemoryStoreImpl.java
MemoryStoreImpl定义:
final class MemoryStoreImpl implements WifiScoreCard.MemoryStore {}
WifiContext相关
WifiContext
Wrapper for context to override getResources method. Resources for wifi mainline jar needs to be fetched from the resources APK.
WifiContext 文件路径:
packages/modules/Wifi/framework/java/android/net/wifi/WifiContext.java
WifiContext 定义:
public class WifiContext extends ContextWrapper {}
WifiInjector相关
WifiInjector
WiFi dependency injector. To be used for accessing various WiFi class instances and as a handle for mock injection.
用于访问各种 WiFi 类实例。
WifiInjector文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiInjector.java
WifiInjector定义:
public class WifiInjector {}
WifiMetrics相关
WifiMetrics
Tracks persisted settings for Wi-Fi and airplane mode interaction。
跟踪 Wi-Fi 和飞行模式交互的持久设置。
WifiMetrics文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiMetrics.java
WifiMetrics定义:
public class WifiMetrics {}
WifiGlobals相关
WifiGlobals
Global wifi service in-memory state that is not persisted.
WifiGlobals文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiGlobals.java
WifiGlobals定义:
public class WifiGlobals {}
WifiThread相关
WifiThreadRunner
Runs code on one of the Wifi service threads from another thread (For ex: incoming AIDL call from a binder thread), in order to prevent race conditions.
WifiThreadRunner文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiThreadRunner.java
WifiThreadRunner定义:
public class WifiThreadRunner {}
WifiConfig相关
WifiConfigManager
This class provides the APIs to manage configured Wi-Fi networks.
此类提供用于管理已配置的 Wi-Fi 网络的 API。
WifiThreadRunner文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiConfigManager.java
WifiConfigManager定义:
public class WifiConfigManager {}
WifiSetting相关
WifiSettingsStore
跟踪 Wi-Fi 和飞行模式交互的持久设置。
WifiSettingsStore文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiSettingsStore.java
WifiSettingsStore定义:
public class WifiSettingsStore {}
WifiMonitor相关
WifiMonitor
Listen for events from the wpa_supplicant & wificond and broadcast them on to the various {@link ClientModeImpl} modules interested in handling these events.
侦听来自wpa_supplicant和wificond的事件,并将它们广播到有兴趣处理这些事件的各种{@link ClientModeImpl}模块上。
WifiMonitor文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiMonitor.java
WifiMonitor定义:
public class WifiMonitor {}
WifiNative相关
WifiNative
Native calls for bring up/shut down of the supplicant daemon and for sending requests to the supplicant daemon
本机调用,用于启动/关闭请求方守护程序以及向请求方守护程序发送请求
WifiNative 文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiNative.java
WifiNative 定义:
public class WifiNative {}
wificond相关
WifiNl80211Manager
This class encapsulates the interface the wificond daemon presents to the Wi-Fi framework - used to encapsulate the Wi-Fi 80211nl management interface. The interface is only for use by the Wi-Fi framework and access is protected by SELinux permissions.
此类封装 wificond 守护程序提供给 Wi-Fi 框架的接口 - 用于封装 Wi-Fi 80211nl 管理接口。该接口仅供 Wi-Fi 框架使用,访问受 SELinux 权限保护。
WifiNl80211Manager文件路径:
frameworks/base/wifi/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java
WifiNl80211Manager定义:
public class WifiNl80211Manager {}
Supplicant相关
SupplicantStaIfaceHal
SupplicantStaIfaceHal文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java
SupplicantStaIfaceHal定义:
public class SupplicantStaIfaceHal {}
SupplicantStaIfaceHalAidlImpl
SupplicantStaIfaceHalAidlImpl文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/SupplicantStaIfaceHalAidlImpl.java
SupplicantStaIfaceHalAidlImpl定义:
public class SupplicantStaIfaceHalAidlImpl implements ISupplicantStaIfaceHal {}
SupplicantStaNetworkHalAidlImpl
SupplicantStaNetworkHalAidlImpl文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/SupplicantStaNetworkHalAidlImpl.java
SupplicantStaNetworkHalAidlImpl定义:
public class SupplicantStaNetworkHalAidlImpl {}
Hostapd相关
HostapdHal
To maintain thread-safety, the locking protocol is that every non-static method (regardless of access level) acquires mLock.
为了维护线程安全,锁定协议是每个非静态方法(无论访问级别如何)都获取 mLock。
HostapdHal文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/HostapdHal.java
HostapdHal定义:
public class HostapdHal {}
HostapdHalAidlImp
The implementation of IHostapdHal which based on Stable AIDL interface 。
基于稳定AIDL接口的IHostapdHal的实现。
IHostapdHal文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/IHostapdHal.java
IHostapdHal定义:
public class HostapdHalAidlImp implements IHostapdHal {}
PasspointManager
This class provides the APIs to manage Passpoint provider configurations.
此类提供用于管理 Passpoint提供程序配置的 API。
MakeBeforeBreakManager文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
MakeBeforeBreakManager定义:
public class PasspointManager{}
VendorHal相关
WifiVendorHal
WifiVendorHal文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/WifiVendorHal.java
WifiVendorHal定义:
public class WifiVendorHal {}
HalDeviceManager
Handles device management through the HAL (HIDL) interface.
通过 HAL (HIDL) 接口处理设备管理。
HalDeviceManager文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/HalDeviceManager.java
HalDeviceManager定义:
public class HalDeviceManager{}
Util相关
WifiPermissionsUtil
A wifi permissions utility assessing permissions for getting scan results by a package.
一个 wifi 权限实用程序,用于评估按包获取扫描结果的权限。
WifiPermissionsUtil文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/util/WifiPermissionsUtil.java
WifiPermissionsUtil定义:
public class WifiPermissionsUtil {}
NetdWrapper
This is a simple wrapper over INetd calls used by wifi stack.
这是一个由wifi堆栈使用的INetd调用的简单包装器。
NetdWrapper文件路径:
packages/modules/Wifi/service/java/com/android/server/wifi/util/NetdWrapper.java
NetdWrapper定义:
public class NetdWrapper {}
二、WifiService方法
void checkAndStartWifi() :检查并启动Wifi
boolean setWifiEnabled(String packageName, boolean enable):设置Wifi使能
boolean startScan(String packageName, String featureId) :开始Wifi扫描
List<ScanResult> getScanResults(String callingPackage, String callingFeatureId) :获取Wifi扫描结果
int getWifiEnabledState():获取Wifi使能状态
int getWifiApEnabledState() :获取Wifi Ap使能状态
boolean startSoftAp(WifiConfiguration wifiConfig, String packageName):使用指定的配置启动软 AP(热点)模式以进行网络共享。
boolean stopSoftAp():停止软AP模式。
void registerSoftApCallback(ISoftApCallback callback) :注册Ap回调
public void unregisterSoftApCallback(ISoftApCallback callback) :取消注册Ap回调
boolean setSoftApConfiguration(@NonNull SoftApConfiguration softApConfig, @NonNull String packageName):
void connect(WifiConfiguration config, int netId, @Nullable IActionListener callback, @NonNull String packageName):连接到具有给定配置的网络。该网络也会添加到前台用户的已配置网络列表中。
void save(WifiConfiguration config, @Nullable IActionListener callback, @NonNull String packageName) :将给定网络保存到前台用户的已配置网络列表中。如果网络已存在,则会更新配置。默认情况下,任何新网络都处于启用状态。
void forget(int netId, @Nullable IActionListener callback):从前台用户的已配置网络列表中删除网络。
void registerScanResultsCallback(@NonNull IScanResultsCallback callback):注册扫描结果的回调。
void unregisterScanResultsCallback(@NonNull IScanResultsCallback callback):允许呼叫者取消注册以前注册的回调。调用此方法后,应用程序将不再收到扫描结果事件。
三、WifiService流程
1、WifiService创建流程
Android13 WifiService创建流程-CSDN博客
2、setWifiEnabled流程
Android13 WifiService setWifiEnabled流程-CSDN博客
3、startScan流程
Android13 WifiService startScan流程-CSDN博客
4、getScanResults流程
Android13 WifiService getScanResults流程-CSDN博客
5、connect流程
Android13 WifiService connect流程-CSDN博客