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。
若要支援透過熱點或僅限本地熱點進行網路共享,應用程式必須執行以下功能:
使用
WifiManager#registerSoftApCallback
(對於系留熱點)或WifiManager#registerLocalOnlyHotspotSoftApCallback
對於僅限本地熱點)註冊回調以取得裝置功能。SoftApCallback
回呼提供以下方法:-
SoftApCallback#onCapabilityChanged
:提供有關設備功能的信息,包括支援的客戶端最大數量以及是否支援 SAE 或 ACS。 -
SoftApCallback#onInfoChanged
:提供有關正在運行的 Soft AP 的資訊(僅在啟動後有效),包括頻段和頻率資訊。 -
SoftApCallback#onConnectedClientsChanged
:提供已連線客戶端的清單。對於每個用戶端,您都可以獲得 MAC 位址。若要取得 IP 訊息,請使用TetheringEventCallback#onClientsChanged
回呼。 -
SoftApCallback#onStateChanged
:在啟用和停用軟 AP 時提供有關其狀態的更新。 -
SoftApCallback#onBlockedClientConnecting
:提供被封鎖的用戶端資訊以及以下封鎖原因之一:裝置達到其可支援的最大用戶端數量或用戶端未明確授權連線。
-
對於綁定熱點:
- 透過呼叫
WifiManager#setSoftApConfiguration
方法並提供SoftApConfiguration
實例來設定網路共用的軟體 AP 配置。使用SoftApConfiguration.Builder
類別建構SoftApConfiguration
。 - 透過呼叫
TetheringManager#startTethering
處的網路共享方法來啟動網路共享。
對於僅限本地的熱點:
- 透過呼叫
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
,從而允許控制應用程式(即「設定」應用程式)採取操作,例如例如,請求用戶確認,然後根據使用者的行為將裝置新增至允許清單或封鎖清單。
- MAC 位址在
請注意,只有在設備支援的情況下,設備才能使用允許清單功能。您可以使用
SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
驗證設備支援。- Soft AP 的預設設定允許所有裝置關聯到該軟體 AP,但 MAC 位址新增至
執行
要支援透過熱點進行網路共享或支援僅限本地的熱點,設備製造商必須提供設定應用程式、框架和 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_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
- (從 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