Android WifiService

一、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博客

6、startSoftAp

Android13 WifiService startSoftAp流程-CSDN博客

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值