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 開發應用程序

系留 Wi-Fi 熱點的默認實現由 AOSP 設置應用程序提供,但它不會使用軟 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獲取最大數量。
  • 使用允許和阻止列表提供動態控制:

    • Soft AP 的默認配置允許所有設備關聯到該軟 AP,但 MAC 地址添加到SoftApConfiguration.Builder#setBlockedClientList的設備除外。
    • 如果使用SoftApConfiguration.Builder#setClientControlByUserEnabled( true )配置軟 AP,則使用允許列表。

      • MAC 地址在SoftApConfiguration.Builder#setBlockedClientList中的所有設備都將被阻止關聯。
      • 所有 MAC 地址在SoftApConfiguration.Builder#setAllowedClientList中的設備都允許關聯。
      • 所有其他設備(即 MAC 地址不在允許或阻止列表中的設備)都將被阻止關聯,但會調用SoftApCallback#onBlockedClientConnecting ,從而允許控制應用程序(即“設置”應用程序)採取操作,例如例如,請求用戶確認,然後根據用戶的行為將設備添加到允許列表或阻止列表中。

    請注意,只有在設備支持的情況下,設備才能使用允許列表功能。您可以使用SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )驗證設備支持。

執行

要支持通過熱點進行網絡共享或支持僅限本地的熱點,設備製造商必須提供設置應用程序、框架和 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 )與控制應用程序(設置應用程序)進行通信。
  • (從 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 連接測試套件或 ACTS)和兼容性測試套件(CTS)測試來驗證熱點功能。還可以使用供應商測試套件 (VTS) 來測試熱點功能。

單元測試

使用以下測試驗證熱點包。

  • 服務測試:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • 經理測試:

    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