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 開發應用程式
Android 開放原始碼計畫會提供網路共用 Wi-Fi 無線基地台的預設實作方式 「設定」應用程式,但不會執行所有 Soft AP 適用的 API 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定
如需透過無線基地台或僅限本機的無線基地台支援網路共用功能, 應用程式必須執行下列函式:
註冊回呼以取得裝置功能
WifiManager#registerSoftApCallback
:使用網路共用無線基地台,或是WifiManager#registerLocalOnlyHotspotSoftApCallback
(僅限本機) 無線基地台。SoftApCallback
回呼提供下列方法:SoftApCallback#onCapabilityChanged
: 提供裝置功能的相關資訊,包括 支援的用戶端數量,以及是否支援 SAE 或 ACS。SoftApCallback#onInfoChanged
: 提供執行中的 Soft AP 相關資訊 (僅有效一次 ),包括頻帶和頻率資訊。SoftApCallback#onConnectedClientsChanged
: 提供已連線用戶端的清單。每個客戶都能獲得 MAC 位址如要取得 IP 資訊,請使用TetheringEventCallback#onClientsChanged
回呼。SoftApCallback#onStateChanged
: 提供 Soft AP 啟用時的狀態更新。 已停用。SoftApCallback#onBlockedClientConnecting
: 提供下列任一項遭封鎖的用戶端資訊 封鎖原因:裝置的 或用戶端並未明確獲得授權 連線。
使用網路共用無線基地台:
- 如要設定共用網路的軟性 AP 設定,請呼叫
WifiManager#setSoftApConfiguration
敬上 方法並提供SoftApConfiguration
例項。建造SoftApConfiguration
使用SoftApConfiguration.Builder
類別 - 透過以下位置呼叫網路共用功能,即可開始共用網路:
TetheringManager#startTethering
。
適用於僅限本機的無線基地台:
- 透過特定軟 AP 設定啟動僅限本機的無線基地台,步驟如下:
呼叫
WifiManager#startLocalOnlyHotspot
敬上 方法。
導入允許和封鎖清單
電信業者的一般規定是,為使用者提供 可與 Soft AP 建立關聯的裝置。以下提供 用途:
- 限制可與 Soft AP 建立關聯的裝置數量上限
使用
SoftApConfiguration.Builder#setMaxNumberOfClients
。請務必 指定一個小於支援用戶端數量上限的數字 資料。可以在SoftApCapability#getMaxSupportedClients
。 使用允許和封鎖清單提供動態控制:
- 根據預設,Soft AP 設定可讓所有裝置
與 soft 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 設定可讓所有裝置
與 soft AP 建立關聯,但 MAC 位址為
已加入「
實作
如需支援透過無線基地台網路共用的功能,或支援僅限本機的無線基地台, 裝置製造商必須提供「設定」應用程式、架構 和 HAL/韌體支援:
「設定」應用程式:Android 開放原始碼計畫「設定」應用程式提供設定基準 網路共用無線基地台含有 SSID 和安全性憑證。這段程式碼可以是 以便提供額外功能 參閱「使用無線基地台 API 開發應用程式」一節。
架構:Android 開放原始碼計畫架構程式碼支援所有功能 相關說明,請參閱「使用無線基地台 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 提供了一組單元測試和 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