Android fornisce il supporto dell'hotspot Wi-Fi (Soft AP), incluso il tethering tramite un hotspot Wi-Fi e hotspot Wi-Fi solo locali.
La funzionalità soft AP consente di configurare quanto segue:
- SSID e BSSID
- Tipo di sicurezza (incluso WPA3)
- SSID nascosto
- Banda operativa e canale (incluso ACS)
- Numero massimo di client consentiti
- Valore timeout arresto automatico
- Lista consentita e lista bloccata per consentire il controllo utente dei dispositivi associati
- Livello di randomizzazione MAC per l'AP BSSID
- 802.11ax e 802.11be
La disponibilità di questi controlli dipende dalle funzionalità del dispositivo. Android 11 introduce le API per ottenere questi le funzionalità di machine learning. I produttori di dispositivi possono anche specificare le funzionalità di base del dispositivo tramite overlay.
Tieni presente che alcune API sono API di sistema e sono limitate autorizzazioni, in modo che solo l'app Impostazioni del sistema possa accedervi.
Sviluppa app con API hotspot
L'AOSP fornisce un'implementazione predefinita di un hotspot Wi-Fi con tethering Impostazioni, tuttavia non supporta tutte le API per Soft AP configurazione.
Per supportare il tethering tramite un hotspot o un hotspot solo locale: l'app deve svolgere le seguenti funzioni:
Registra un callback per ottenere le funzionalità del dispositivo utilizzando
WifiManager#registerSoftApCallback
per un hotspot con tethering oppureWifiManager#registerLocalOnlyHotspotSoftApCallback
per un acquisto solo locale un hotspot.Il callback
SoftApCallback
fornisce i seguenti metodi:SoftApCallback#onCapabilityChanged
: Fornisce informazioni sulle funzionalità del dispositivo, tra cui le numero di client supportati e se sono supportati SAE o ACS.SoftApCallback#onInfoChanged
: Fornisce informazioni sull'AP software in esecuzione (valido solo una volta incluse le informazioni su banda e frequenza.SoftApCallback#onConnectedClientsChanged
: Fornisce un elenco dei client connessi. Per ogni cliente, puoi ottenere l'indirizzo MAC. Per ottenere le informazioni IP, utilizza il metodo Chiamata diTetheringEventCallback#onClientsChanged
.SoftApCallback#onStateChanged
: Fornisce aggiornamenti sullo stato del soft AP non appena viene attivato e disattivata.SoftApCallback#onBlockedClientConnecting
: Fornisce le informazioni sul client bloccato con uno dei seguenti elementi motivi del blocco: il dispositivo ha raggiunto il numero massimo di client che può supportare o a cui il cliente non è esplicitamente autorizzato connettersi.
Per un hotspot con tethering:
- Configura la configurazione soft AP per il tethering chiamando il
WifiManager#setSoftApConfiguration
e fornendo un'istanzaSoftApConfiguration
. CostruireSoftApConfiguration
conSoftApConfiguration.Builder
. - Avvia il tethering chiamando il metodo di tethering all'indirizzo
TetheringManager#startTethering
Per hotspot solo locale:
- Avvia l'hotspot solo locale con una configurazione soft AP specifica
chiamando il
WifiManager#startLocalOnlyHotspot
.
Implementare elenchi di elementi consentiti e bloccati
Un tipico requisito dell'operatore è fornire all'utente i controlli delle dispositivi autorizzati ad associare al Soft AP. Esistono diversi meccanismi per farlo:
- Limita il numero massimo di dispositivi che possono essere associati al soft AP
utilizzando
SoftApConfiguration.Builder#setMaxNumberOfClients
. Assicurati di specifica un numero inferiore al numero massimo di client supportati dal dispositivo. Puoi ottenere il numero massimo daSoftApCapability#getMaxSupportedClients
. Fornire un controllo dinamico utilizzando liste consentite e bloccate:
- La configurazione predefinita di un Soft AP consente a tutti i dispositivi di
associate al soft AP, ad eccezione dei dispositivi i cui indirizzi MAC sono
aggiunto a
SoftApConfiguration.Builder#setBlockedClientList
. Se il soft AP è configurato con
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
, viene utilizzata la lista consentita.- Tutti i dispositivi con indirizzi MAC memorizzati
SoftApConfiguration.Builder#setBlockedClientList
è bloccato da dell'associazione. - Tutti i dispositivi con indirizzi MAC memorizzati
SoftApConfiguration.Builder#setAllowedClientList
è consentito dell'associazione. - Tutti gli altri dispositivi (ovvero i dispositivi con indirizzi MAC
non sono nella lista consentita o bloccata) non sono bloccati
ma
SoftApCallback#onBlockedClientConnecting
è , consentendo all'app di controllo (ovvero l'app Impostazioni) di eseguire un'azione, ad esempio chiedere conferma all'utente quindi aggiungi il dispositivo alla lista consentita o alla lista bloccata. a seconda del comportamento dell'utente.
- Tutti i dispositivi con indirizzi MAC memorizzati
Tieni presente che i dispositivi possono utilizzare la funzionalità lista consentita solo se: supportati sul dispositivo. Puoi verificare il supporto del dispositivo utilizzando
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- La configurazione predefinita di un Soft AP consente a tutti i dispositivi di
associate al soft AP, ad eccezione dei dispositivi i cui indirizzi MAC sono
aggiunto a
Implementazione
Per supportare il tethering tramite un hotspot o un hotspot solo locale: i produttori di dispositivi devono fornire impostazioni app, framework e HAL/firmware:
App Impostazioni: l'app Impostazioni AOSP fornisce una base per la configurazione un hotspot di tethering con SSID e credenziali di sicurezza. Questo codice può essere vengono utilizzati così come sono o modificati per fornire funzionalità aggiuntive, come descritto in Sviluppo di app con API hotspot.
Framework: il codice del framework AOSP supporta tutte le funzionalità descritto in Sviluppare app con API hotspot.
HAL/firmware per hotspot: L'elenco HIDL Hostapd.hal versione 1.2 o successive oppure il modello AIDL IHostapd.aidl.
Personalizzazione
Per personalizzare l'implementazione, i produttori di dispositivi devono configurare
gli overlay e le configurazioni degli operatori indicati di seguito, che sono documentati
packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: il valore predefinito dell'intervallo di timeout di arresto. Valido solo seSoftApConfiguration#setAutoShutdownEnabled
è abilitato. Può essere sostituito utilizzandoSoftApConfiguration#setShutdownTimeoutMillis
.config_wifiHardwareSoftapMaxClientCount
: la limitazione hardware il numero massimo di client supportati. Il numero massimo di client supportate dal dispositivo sono le risorse hardware e di operatore minime dei vincoli (specificati daCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Il risultato finale viene fornito all'app conSoftApCapabilities#getMaxSupportedClients
.config_wifiSofapClientForceDisconnectSupported
: se il dispositivo è possibilità di forzare la disconnessione di un client. Obbligatorio per abilitare l'autorizzazione ed elenchi di blocco. Comunicazione all'app di controllo (app Impostazioni) tramiteSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- (Disponibile a partire da 13 anni)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Indica se la passphrase soft AP deve essere codificabile con ASCII. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: se o meno per eseguire l'upgrade automatico della configurazione delle impostazioni di banda a dual band durante della configurazione cloud quando è supportato un nuovo dispositivo.- (Disponibile a partire da 13 anni)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Indica se il framework aggiunge automaticamente bande inferiori alla configurazione di banda per evitare la gestione della coesistenza. config_wifiSoftApDynamicCountryCodeUpdateSupported
: se dinamico o meno l'aggiornamento dei codici paese in modalità AP è supportato sul dispositivo- Canale supportato:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
econfig_wifiSoftap60gChannelList
. - Ripristina l'assistenza che specifica se le voci corrispondenti vengono reimpostate
al valore predefinito quando si ripristina la configurazione dell'hotspot su un nuovo dispositivo:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Tieni presente che questi sono impostati sutrue
per impostazione predefinita, il che significa che i valori vengono reimpostati. Questo è fondamentale se il nuovo dispositivo non supporta la configurazione. - Funzionalità hardware:
config_wifi_softap_acs_supported
config_wifi_softap_sae_supported
- (Disponibile a partire da 13 anni)
config_wifiSoftapOweTransitionSupported
- (Disponibile a partire da 13 anni)
config_wifiSoftapOweSupported
config_wifi_softap_ieee80211ac_supported
config_wifiSoftapIeee80211axSupported
- (Disponibile a partire da 13 anni)
config_wifiSoftapIeee80211beSupported
config_wifiSoftapMacAddressCustomizationSupported
config_wifiSoftapHeSuBeamformerSupported
config_wifiSoftapHeSuBeamformeeSupported
config_wifiSoftapHeMuBeamformerSupported
config_wifiSoftapHeTwtSupported
config_wifiSoftap24ghzSupported
config_wifiSoftap5ghzSupported
config_wifiSoftap6ghzSupported
config_wifiSoftap60ghzSupported
config_wifiSoftapAcsIncludeDfs
Convalida
Android mette a disposizione una serie di test delle unità e delle suite di test di compatibilità (CTS, Compatibility Test Suite). per convalidare la funzionalità hotspot. La funzione hotspot può essere testata anche utilizzando la suite di test per i fornitori (VTS, Vendor Test Suite).
Test delle unità
Verifica il pacchetto hotspot utilizzando i seguenti test.
Test di servizio:
atest packages/modules/Wifi/service/tests/wifitests/
Test del gestore:
atest packages/modules/Wifi/framework/tests/
Test della Compatibility Test Suite (CTS)
Utilizza i test CTS per convalidare la funzionalità degli hotspot. Il CTS rileva quando la funzione è abilitata e include automaticamente test associati.
Per attivare i test CTS, esegui:
atest android.net.wifi.cts.WifiManagerTest
Suite di test del fornitore (VTS)
Se l'interfaccia HIDL è implementata, esegui:
atest VtsHalWifiHostapdV1_2Target
Se l'interfaccia AIDL è implementata, esegui:
atest VtsHalHostapdTargetTest