Wi-Fi 热点 (Soft AP)

Android 提供对 Wi-Fi 热点 (Soft AP) 的支持,包括通过 Wi-Fi 热点和本地专用 Wi-Fi 热点进行网络共享。

Soft AP 功能允许配置以下各项

  • SSID 和 BSSID
  • 安全类型(包括 WPA3)
  • 隐藏 SSID
  • 工作频段和信道(包括 ACS)
  • 允许的最大客户端数
  • 自动关闭超时值
  • 允许列表和阻止列表,用于允许用户控制关联设备
  • AP BSSID 的 MAC 随机化级别
  • 802.11ax 和 802.11be

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

请注意,某些 API 是系统 API,并通过权限进行限制,以便只有系统的“设置”应用可以访问它们。

使用热点 API 开发应用

AOSP “设置”应用提供了网络共享 Wi-Fi 热点的默认实现,但它不使用 Soft AP 配置的所有 API。

为了支持通过热点或本地专用热点进行网络共享,应用必须执行以下功能

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

    SoftApCallback 回调提供以下方法

对于网络共享热点

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

对于仅限本地的热点

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

实现允许列表和阻止列表

典型的运营商要求是向用户提供对其 Soft AP 允许关联的设备的控制。有几种机制可以实现此目的

  • 使用 SoftApConfiguration.Builder#setMaxNumberOfClients 限制可以关联到软 AP 的设备的最大数量。确保指定的数字低于设备支持的最大客户端数量。您可以从 SoftApCapability#getMaxSupportedClients 获取最大数量。
  • 使用允许列表和阻止列表提供动态控制

    • 软 AP 的默认配置允许所有设备关联到软 AP,但 MAC 地址添加到 SoftApConfiguration.Builder#setBlockedClientList 的设备除外。
    • 如果软 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 提供了一组单元测试和兼容性测试套件 (CTS) 测试,用于验证热点功能。热点功能也可以使用供应商测试套件 (VTS) 进行测试。

单元测试

使用以下测试验证热点软件包。

  • 服务测试

    atest packages/modules/Wifi/service/tests/wifitests/
  • 管理器测试

    atest packages/modules/Wifi/framework/tests/

兼容性测试套件 (CTS) 测试

使用CTS 测试验证热点功能。当功能启用时,CTS 会检测到并自动包含关联的测试。

要触发 CTS 测试,请运行

atest android.net.wifi.cts.WifiManagerTest

供应商测试套件 (VTS)

如果实现了 HIDL 接口,请运行

atest VtsHalWifiHostapdV1_2Target

如果实现了 AIDL 接口,请运行

atest VtsHalHostapdTargetTest