Android 支援 Wi-Fi 無線基地台 (軟體存取點),包括透過 Wi-Fi 無線基地台和僅限本機的 Wi-Fi 無線基地台進行網路共用。
軟體無線基地台功能可設定下列項目:
- SSID 和 BSSID
- 安全性類型 (包括 WPA3)
- 隱藏的 SSID
- 運作頻帶和頻道 (包括 ACS)
- 允許的用戶端數量上限
- 自動關機逾時值
- 使用許可清單和封鎖清單,讓使用者控管相關聯的裝置
- AP BSSID 的 MAC 隨機化層級
- 802.11ax 和 802.11be
這些控制選項是否可用,取決於裝置功能。 Android 11 導入了可取得這些功能的 API。裝置製造商也可以使用疊加層指定基本裝置功能。
使用無線基地台 API 開發應用程式
Android 開放原始碼計畫 (AOSP) 設定應用程式提供繫結 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:在啟用及停用軟體 AP 時,提供軟體 AP 狀態的更新資訊。SoftApCallback#onBlockedClientConnecting: 提供遭封鎖的用戶端資訊,並說明封鎖原因:裝置已達可支援的用戶端數量上限,或用戶端未獲得明確授權可連線。SoftApCallback#onClientsDisconnected:提供已中斷連線的用戶端清單。您可以取得每個用戶端的連線中斷原因。
透過網路共用建立的無線基地台:
- 呼叫
WifiManager#setSoftApConfiguration方法並提供SoftApConfiguration例項,設定連線共用功能的軟體 AP 設定。使用SoftApConfiguration.Builder類別建構SoftApConfiguration。 - 在
TetheringManager#startTethering呼叫連線方法,啟動連線。
僅限本機的無線基地台:
- 呼叫
WifiManager#startLocalOnlyHotspot方法,使用特定軟體 AP 設定啟動僅限本機的無線基地台。
導入允許和封鎖清單
一般來說,電信業者會要求提供裝置控制項,讓使用者控管允許與軟體 AP 建立關聯的裝置。有幾種機制可以達成這個目的:
- 使用
SoftApConfiguration.Builder#setMaxNumberOfClients限制可與軟體 AP 建立關聯的裝置數量上限。請務必指定小於裝置支援用戶端數量上限的數字。如要瞭解數量上限,請參閱SoftApCapability#getMaxSupportedClients。 使用允許和封鎖清單提供動態控制:
- 軟體存取點的預設設定允許所有裝置與軟體存取點建立關聯,但 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)驗證裝置是否支援。- 軟體存取點的預設設定允許所有裝置與軟體存取點建立關聯,但 MAC 位址已新增至
實作
如要支援透過無線基地台網路共用,或支援僅限本機的無線基地台, 裝置製造商必須提供設定應用程式、架構, 以及 HAL/韌體支援:
「設定」應用程式:Android 開放原始碼計畫 (AOSP) 的「設定」應用程式提供基準,可使用 SSID 和安全憑證設定網路共用無線基地台。您可以直接使用這段程式碼,也可以修改程式碼,以提供「使用熱點 API 開發應用程式」一文所述的其他功能。
架構:AOSP 架構程式碼支援「使用無線基地台 API 開發應用程式」一文所述的所有功能。
熱點的 HAL/韌體: HIDL
IHostapd.hal1.2 以上版本,或 AIDLIHostapd.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_supportedconfig_wifi_softap_sae_supported- (適用於 13 以上版本)
config_wifiSoftapOweTransitionSupported - (適用於 13 以上版本)
config_wifiSoftapOweSupported config_wifi_softap_ieee80211ac_supportedconfig_wifiSoftapIeee80211axSupported- (適用於 13 以上版本)
config_wifiSoftapIeee80211beSupported config_wifiSoftapMacAddressCustomizationSupportedconfig_wifiSoftapHeSuBeamformerSupportedconfig_wifiSoftapHeSuBeamformeeSupportedconfig_wifiSoftapHeMuBeamformerSupportedconfig_wifiSoftapHeTwtSupportedconfig_wifiSoftap24ghzSupportedconfig_wifiSoftap5ghzSupportedconfig_wifiSoftap6ghzSupportedconfig_wifiSoftap60ghzSupportedconfig_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