Android 支援 Wi-Fi 無線基地台 (Soft AP),包括透過 Wi-Fi 無線基地台和本機專用的 Wi-Fi 無線基地台網路共用功能。
軟 AP 功能可設定以下項目:
- SSID 和 BSSID
- 安全性類型 (包括 WPA3)
- 隱藏的 SSID
- 營運頻帶和通路 (包括 ACS)
- 允許的用戶端數量上限
- 自動關閉逾時值
- 加入許可清單和封鎖清單,可讓使用者控制相關聯裝置的機制
- AP BSSID 的 MAC 隨機化等級
- 802.11ax 和 802.11be
裝置功能會決定這些控制項是否可用。Android 11 導入了用來取得這些功能的 API。裝置製造商也可以使用疊加層指定基本裝置功能。
請注意,某些 API 屬於系統 API,且設有權限限制,因此只有系統的「設定」應用程式可以存取這些 API。
使用無線基地台 API 開發應用程式
Android 開放原始碼計畫「設定」應用程式會提供共用 Wi-Fi 無線基地台的預設實作方式,但不會執行所有 Soft AP 設定適用的 API。
如要支援透過無線基地台或僅限本機無線基地台進行網路共用功能,應用程式必須執行以下功能:
註冊回呼,使用
WifiManager#registerSoftApCallback
取得網路共用無線基地台,或針對僅限本機的無線基地台使用WifiManager#registerLocalOnlyHotspotSoftApCallback
取得裝置功能。SoftApCallback
回呼提供下列方法:SoftApCallback#onCapabilityChanged
:提供裝置功能的相關資訊,包括支援的用戶端數量上限,以及是否支援 SAE 或 ACS。SoftApCallback#onInfoChanged
:提供執行中的軟 AP (僅在啟動後有效) 相關資訊,包括頻帶和頻率資訊。SoftApCallback#onConnectedClientsChanged
:提供已連線的用戶端清單。您可以為每個用戶端取得 MAC 位址。如要取得 IP 資訊,請使用TetheringEventCallback#onClientsChanged
回呼。SoftApCallback#onStateChanged
:在 Soft AP 啟用及停用時提供其狀態更新。SoftApCallback#onBlockedClientConnecting
:提供遭封鎖的用戶端資訊,原因如下:裝置已達封鎖用戶端數量上限,或用戶端未明確獲得授權,可以連線。
使用網路共用無線基地台:
- 呼叫
WifiManager#setSoftApConfiguration
方法並提供SoftApConfiguration
例項,即可為網路共用設定軟性 AP 設定。使用SoftApConfiguration.Builder
類別建構SoftApConfiguration
。 - 透過
TetheringManager#startTethering
呼叫網路共用方法,啟動網路共用。
適用於僅限本機的無線基地台:
- 呼叫
WifiManager#startLocalOnlyHotspot
方法,以特定的軟性 AP 設定啟動僅限本機的無線基地台。
導入允許和封鎖清單
一般的電信業者規定是,讓使用者能夠控管哪些裝置能與 Soft AP 建立關聯。以下是執行這項操作的幾種機制:
- 使用
SoftApConfiguration.Builder#setMaxNumberOfClients
限制可與軟 AP 建立關聯的裝置數量上限。請務必指定小於裝置支援的用戶端數量上限的數字。您可以從SoftApCapability#getMaxSupportedClients
取得上限值。 使用允許和封鎖清單提供動態控制:
- Soft AP 的預設設定允許所有裝置與軟 AP 建立關聯,但 MAC 位址新增至
SoftApConfiguration.Builder#setBlockedClientList
的裝置除外。 如果 Soft AP 設定了
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
,系統會使用允許清單。- MAC 位址在
SoftApConfiguration.Builder#setBlockedClientList
中的所有裝置都會禁止建立關聯。 - MAC 位址在
SoftApConfiguration.Builder#setAllowedClientList
中的所有裝置都可以建立關聯。 - 所有其他裝置 (即 MAC 位址不在允許或封鎖清單中的裝置) 會遭到封鎖,無法建立關聯,但系統會呼叫
SoftApCallback#onBlockedClientConnecting
,允許控制應用程式 (即「設定」應用程式) 採取特定動作,例如要求使用者確認,然後將裝置新增至許可清單,或根據使用者行為將其加入封鎖清單。
- MAC 位址在
請注意,如果裝置支援允許清單功能,就只能使用允許清單功能。您可以使用
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
確認裝置支援。- Soft AP 的預設設定允許所有裝置與軟 AP 建立關聯,但 MAC 位址新增至
導入作業
如要支援透過無線基地台網路共用功能,或支援僅限本機的無線基地台,裝置製造商必須提供「設定」應用程式、架構和 HAL/韌體支援:
設定應用程式:Android 開放原始碼計畫「設定」應用程式提供使用 SSID 和安全性憑證設定網路共用無線基地台的基準。您可以按照「使用無線基地台 API 開發應用程式」一文的說明,直接修改或修改這個程式碼來提供額外功能。
架構:Android 開放原始碼計畫架構程式碼支援「使用無線基地台 API 開發應用程式」中所述的所有功能。
無線基地台的 HAL/Firmware: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 提供一組單元測試和 Compatibility Test Suite (CTS) 測試,來驗證無線基地台功能。您也可以使用供應商測試套件 (VTS) 來測試熱點功能。
單元測試
使用下列測試驗證無線基地台套件。
服務測試:
atest packages/modules/Wifi/service/tests/wifitests/
管理員測試:
atest packages/modules/Wifi/framework/tests/
Compatibility Test Suite (CTS) 測試
使用 CTS 測試來驗證無線基地台功能。CTS 會偵測這項功能啟用的時間,並自動納入相關的測試。
如要觸發 CTS 測試,請執行:
atest android.net.wifi.cts.WifiManagerTest
供應商測試套件 (VTS)
如果已實作 HIDL 介面,請執行以下指令:
atest VtsHalWifiHostapdV1_2Target
如果已實作 AIDL 介面,請執行:
atest VtsHalHostapdTargetTest