Wi-Fi 热点(软 AP)

Android 支持 Wi-Fi 热点(软 AP),包括通过 Wi-Fi 热点和仅限本地使用的 Wi-Fi 热点共享网络。

软 AP 功能允许配置以下内容:

  • SSID 和 BSSID
  • 安全类型(包括 WPA3)
  • 隐藏的 SSID
  • 操作频段和频道(包括 ACS)
  • 允许的客户端数量上限
  • 自动关闭超时值
  • 使用户能够控制关联设备的许可名单和屏蔽名单
  • AP BSSID 的 MAC 地址随机分配级别
  • 802.11ax 和 802.11be

设备功能决定了这些控件的可用性。Android 11 引入了可用于获取相应功能的 API。设备制造商还可以使用叠加层指定基础设备功能。

请注意,在这些 API 中,有一些是系统 API,通过各种权限进行了限制,以便只有系统的“设置”应用可以访问它们。

使用热点 API 开发应用

AOSP 的“设置”应用会提供网络共享 Wi-Fi 热点的默认实现,但不会执行用于软 AP 配置的所有 API。

如需支持通过热点或仅限本地使用的热点进行网络共享,应用必须执行以下功能:

  1. 注册回调,以使用 WifiManager#registerSoftApCallback(对于网络共享热点)或 WifiManager#registerLocalOnlyHotspotSoftApCallback(对于仅限本地使用的热点)获取设备功能。

    SoftApCallback 回调提供以下方法:

对于网络共享热点

  1. 通过调用 WifiManager#setSoftApConfiguration 方法并提供 SoftApConfiguration 实例,配置用于网络共享的软 AP 配置。使用 SoftApConfiguration.Builder 类构造 SoftApConfiguration
  2. 通过调用位于 TetheringManager#startTethering 的网络共享方法,启动网络共享。

对于仅限本地使用的热点

  1. 通过调用 WifiManager#startLocalOnlyHotspot 方法,启动采用特定软 AP 配置的仅限本地使用的热点。

实现许可名单和屏蔽名单

典型的运营商要求是,为用户提供用于控制可与软 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,从而允许控制应用(即“设置”应用)执行操作,例如让用户确认,然后根据用户的行为将设备添加到许可名单和屏蔽名单中。

    请注意,仅当设备支持许可名单功能时,才能使用该功能。您可以使用 SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) 验证设备是否支持该功能。

实现

如需支持通过热点进行共享网络或支持仅限本地使用的热点,设备制造商必须提供“设置”应用、框架和 HAL/固件支持:

  • “设置”应用:AOSP“设置”应用为配置具有 SSID 和安全凭据的网络共享热点提供了基准。此代码可按原样使用,也可以进行修改以提供其他功能,如使用热点 API 开发应用中所述。

  • 框架:AOSP 框架代码支持使用热点 API 开发应用中所述的所有功能。

  • 热点的 HAL/固件:HIDL IHostapd.hal 版本 1.2 或更高版本,或 AIDL IHostapd.aidl

自定义

如需自定义实现,设备制造商应配置以下叠加层和运营商配置(记录在 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) 传达给控制应用(“设置”应用)。
  • (自 13 开始可用)config_wifiSoftapPassphraseAsciiEncodableCheck:是否需要软 AP 口令才可进行 ASCII 编码。
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported:在支持新设备时,云配置恢复期间是否会自动将频段设置配置升级到双频。
  • (自 13 开始可用)config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled:框架是否自动在频段配置中附加较低频段以避免共存处理。
  • config_wifiSoftApDynamicCountryCodeUpdateSupported:设备是否支持在 AP 模式下动态更新国家/地区代码
  • 通道支持:config_wifiSoftap2gChannelListconfig_wifiSoftap5gChannelListconfig_wifiSoftap6gChannelListconfig_wifiSoftap60gChannelList
  • 恢复支持,指定在将热点配置恢复到新设备时,是否将相应条目重置为默认值:config_wifiSoftapResetChannelConfigconfig_wifiSoftapResetHiddenConfigconfig_wifiSoftapResetUserControlConfigconfig_wifiSoftapResetAutoShutdownTimerConfigconfig_wifiSoftapResetMaxClientSettingConfig。请注意,这些配置默认设置为 true,也就是说,值会被重置。当新设备不支持配置时,这点至关重要。
  • 硬件功能:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (自 13 开始可用)config_wifiSoftapOweTransitionSupported
    • (自 13 开始可用)config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (自 13 开始可用)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)

如果实现了 HIDL 接口,请运行以下命令:

atest VtsHalWifiHostapdV1_2Target

如果实现了 AIDL 接口,请运行以下命令:

atest VtsHalHostapdTargetTest