Android 支持通过 Wi-Fi 热点(软 AP)进行网络共享。从 Android 11 开始,可供设备制造商使用的软 AP 配置支持更多运营商使用情形和自定义,包括以下方面的配置:
- SSID 和 BSSID
- 安全类型(包括 WPA3)
- 隐藏的 SSID
- 操作频段和频道(包括 ACS)
- 允许的客户端数量上限
- 自动关闭超时值
- 使用户能够控制关联设备的许可名单和屏蔽名单
- AP BSSID 的 MAC 地址随机分配级别
- 802.11ax 和 802.11be
设备功能决定了这些控件的可用性。Android 11 引入了可用于获取相应功能的 API。设备制造商还可以使用叠加层指定基础设备功能。
请注意,在这些 API 中,有一些是系统 API,通过各种权限进行了限制,以便只有系统的“设置”应用可以访问它们。
示例和源代码
AOSP“设置”应用提供了默认实现,但该实现不会针对软 AP 配置执行所有这些 API。调用应用必须执行以下三项操作:
使用
WifiManager#registerSoftApCallback
注册回调以获取设备功能。SoftApCallback
回调提供多种方法:SoftApCallback#onCapabilityChanged
:提供有关设备功能的信息,包括支持的客户端数量上限以及支持 SAE 还是 ACS。SoftApCallback#onInfoChanged
:提供有关正在运行的软 AP(仅在启动后有效)的信息,包括频段和频率信息。SoftApCallback#onConnectedClientsChanged
:提供连接的客户端列表。对于每个客户端,您都可以获取 MAC 地址。如需获取 IP 信息,请使用TetheringEventCallback#onClientsChanged
回调。SoftApCallback#onStateChanged
:在软 AP 启用和停用时提供相应的状态更新信息。SoftApCallback#onBlockedClientConnecting
:为被屏蔽的客户端信息提供以下某一屏蔽原因:设备已达到可以支持的客户端数量上限,或客户端未获得明确授权,无法连接。
通过调用
WifiManager#setSoftApConfiguration
方法并提供SoftApConfiguration
实例,配置软 AP 的配置,使其用于网络共享。您可以使用SoftApConfiguration.Builder
类构造SoftApConfiguration
。通过调用位于
TetheringManager#startTethering
的网络共享方法,启动网络共享。
实现许可名单和屏蔽名单
典型的运营商要求是,为用户提供用于控制可与软 AP 相关联的设备的控件。多种机制可助您实现此目标:
- 使用
SoftApConfiguration.Builder#setMaxNumberOfClients
限制可与软 AP 相关联的设备数量上限。请确保指定的数值低于设备支持的客户端数量上限。您可以通过SoftApCapability#getMaxSupportedClients
获取数量上限。 使用许可名单和屏蔽名单来提供动态控制:
- 软 AP 的默认配置允许除 MAC 地址添加到
SoftApConfiguration.Builder#setBlockedClientList
的设备以外的所有设备与软 AP 相关联。 如果软 AP 配置了
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
,系统会使用许可名单。- MAC 地址位于
SoftApConfiguration.Builder#setBlockedClientList
的所有设备均无法进行关联。 - MAC 地址位于
SoftApConfiguration.Builder#setAllowedClientList
的所有设备均可以进行关联。 - 所有其他设备(即 MAC 地址不在许可名单和屏蔽名单中的设备)均无法进行关联,但系统会调用
SoftApCallback#onBlockedClientConnecting
,从而允许控制应用(即“设置”应用)执行操作,例如让用户确认,然后根据用户的行为将设备添加到许可名单和屏蔽名单中。
- MAC 地址位于
请注意,仅当设备支持许可名单功能时,才能使用该功能。您可以使用
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
验证设备是否支持该功能。- 软 AP 的默认配置允许除 MAC 地址添加到
实现
如要通过 Wi-Fi 热点(软 AP)支持网络共享,设备制造商必须提供“设置”应用、框架和 HAL/固件支持:
“设置”应用:AOSP“设置”应用为配置具有 SSID 和安全凭据的网络共享热点提供了基准。此代码可按原样使用,也可以进行修改,以提供示例和源代码部分所述的其他功能。
框架:AOSP 框架代码支持示例和源代码部分所述的所有功能。
热点的 HAL/固件:IHostapd.HAL
自定义
如需自定义实现,设备制造商应配置以下叠加层和运营商配置(记录在 packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
中):
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
:默认的关闭超时时间间隔。仅在SoftApConfiguration#setAutoShutdownEnabled
已启用的情况下有效。可以使用SoftApConfiguration#setShutdownTimeoutMillis
替换。config_wifiHardwareSoftapMaxClientCount
:支持的客户端数量上限的硬件限制。设备支持的客户端数量上限是硬件和运营商限制的下限(由CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
指定)。最终结果通过SoftApCapabilities#getMaxSupportedClients
提供给应用。config_wifiSofapClientForceDisconnectSupported
:设备能否强制断开与客户端的连接。这是启用许可名单和屏蔽名单所必需的。通过SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
传达给控制应用(“设置”应用)。- (在 T [AOSP 实验版] 中可用)
config_wifiSoftapPassphraseAsciiEncodableCheck
:为 ASCII 编码是否需要软 AP 口令。 config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
:在支持新设备时,云配置恢复期间是否会自动将频段设置配置升级到双频。- (在 T [AOSP 实验版] 中可用)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
:框架是否自动在频段配置中附加较低频段以避免共存处理。 config_wifiSoftApDynamicCountryCodeUpdateSupported
:设备是否支持在 AP 模式下动态更新国家/地区代码- 通道支持:
config_wifiSoftap2gChannelList
、config_wifiSoftap5gChannelList
、config_wifiSoftap6gChannelList
和config_wifiSoftap60gChannelList
。 - 恢复支持,指定在将热点配置恢复到新设备时,是否将相应条目重置为默认值:
config_wifiSoftapResetChannelConfig
、config_wifiSoftapResetHiddenConfig
、config_wifiSoftapResetUserControlConfig
、config_wifiSoftapResetAutoShutdownTimerConfig
、config_wifiSoftapResetMaxClientSettingConfig
。请注意,这些配置默认设置为true
,也就是说,值会被重置。当新设备不支持配置时,这点至关重要。 - 硬件功能:
config_wifi_softap_acs_supported
config_wifi_softap_sae_supported
- (在 T [AOSP 实验版] 中可用)
config_wifiSoftapOweTransitionSupported
- (在 T [AOSP 实验版] 中可用)
config_wifiSoftapOweSupported
config_wifi_softap_ieee80211ac_supported
config_wifiSoftapIeee80211axSupported
- (在 T [AOSP 实验版] 中可用)
config_wifiSoftapIeee80211beSupported
config_wifiSoftapMacAddressCustomizationSupported
config_wifiSoftapHeSuBeamformerSupported
config_wifiSoftapHeSuBeamformeeSupported
config_wifiSoftapHeMuBeamformerSupported
config_wifiSoftapHeTwtSupported
config_wifiSoftap24ghzSupported
config_wifiSoftap5ghzSupported
config_wifiSoftap6ghzSupported
config_wifiSoftap60ghzSupported
config_wifiSoftapAcsIncludeDfs
验证
Android 提供了一组单元测试、集成测试(Android Connectivity Test Suite (ACTS))和兼容性测试套件 (CTS) 测试,供您验证热点功能。您也可以使用供应商测试套件 (VTS) 来测试热点功能。
单元测试
使用以下测试验证热点软件包。
服务测试:
atest packages/modules/Wifi/service/tests/wifitests/
Manager 测试:
atest packages/modules/Wifi/framework/tests/
集成测试 (ACTS)
ACTS 热点测试套件(位于 tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py
)可实现热点功能的功能测试。
兼容性测试套件 (CTS) 测试
使用 CTS 测试来验证热点功能。CTS 会检测何时启用了这项功能,并会自动包含相关测试。
如需触发 CTS 测试,请运行以下命令:
atest android.net.wifi.cts.WifiManagerTest
供应商测试套件 (VTS)
如需运行 VTS 测试,请运行以下命令:
atest VtsHalHostapdTargetTest