Android prend en charge le point d'accès Wi-Fi (Soft AP), y compris le partage de connexion via un point d'accès Wi-Fi et des points d'accès Wi-Fi locaux uniquement.
La fonctionnalité soft AP permet la configuration des éléments suivants :
- SSID et BSSID
- Type de sécurité (y compris WPA3)
- SSID caché
- Bande et canal d'exploitation (y compris ACS)
- Nombre maximum de clients autorisés
- Valeur du délai d'expiration de l'arrêt automatique
- Liste d'autorisation et liste de blocage pour permettre à l'utilisateur de contrôler les appareils associés
- Niveau de randomisation MAC pour l'AP BSSID
- 802.11ax et 802.11be
Les capacités de l'appareil déterminent la disponibilité de ces contrôles. Android 11 introduit des API pour obtenir ces fonctionnalités. Les fabricants d'appareils peuvent également spécifier les fonctionnalités de base des appareils à l'aide de superpositions.
Notez que certaines API sont des API système et sont limitées par des autorisations afin que seule l'application Paramètres du système puisse y accéder.
Développer des applications avec des API de hotspot
Une implémentation par défaut d'un point d'accès Wi-Fi connecté est fournie par l'application Paramètres AOSP, mais elle n'utilise pas toutes les API pour la configuration Soft AP.
Pour prendre en charge le partage de connexion via un point d'accès ou un point d'accès local uniquement, l'application doit exécuter les fonctions suivantes :
Enregistrez un rappel pour obtenir les fonctionnalités de l'appareil à l'aide de
WifiManager#registerSoftApCallback
pour un point d'accès connecté ouWifiManager#registerLocalOnlyHotspotSoftApCallback
pour un point d'accès local uniquement.Le rappel
SoftApCallback
fournit les méthodes suivantes :-
SoftApCallback#onCapabilityChanged
: fournit des informations sur les capacités de l'appareil, y compris le nombre maximum de clients pris en charge et si SAE ou ACS sont pris en charge. -
SoftApCallback#onInfoChanged
: fournit des informations sur le Soft AP en cours d'exécution (valable uniquement une fois démarré), y compris des informations sur la bande et la fréquence. -
SoftApCallback#onConnectedClientsChanged
: Fournit une liste des clients connectés. Pour chaque client, vous pouvez obtenir l'adresse MAC. Pour obtenir les informations IP, utilisez le rappelTetheringEventCallback#onClientsChanged
. -
SoftApCallback#onStateChanged
: fournit des mises à jour sur l'état du Soft AP à mesure qu'il est activé et désactivé. -
SoftApCallback#onBlockedClientConnecting
: fournit les informations sur le client bloqué avec l'une des raisons suivantes pour le blocage : l'appareil a atteint le nombre maximum de clients qu'il peut prendre en charge ou le client n'est pas explicitement autorisé à se connecter.
-
Pour un point d'accès connecté :
- Configurez la configuration logicielle du point d'accès pour le partage de connexion en appelant la méthode
WifiManager#setSoftApConfiguration
et en fournissant une instanceSoftApConfiguration
. ConstruisezSoftApConfiguration
à l’aide de la classeSoftApConfiguration.Builder
. - Démarrez le partage de connexion en appelant la méthode de partage de connexion à
TetheringManager#startTethering
.
Pour un point d'accès local uniquement :
- Démarrez le point d'accès local uniquement avec une configuration AP logicielle spécifique en appelant la méthode
WifiManager#startLocalOnlyHotspot
.
Implémentation de listes d'autorisation et de blocage
Une exigence typique de l'opérateur est de fournir à l'utilisateur des contrôles sur les appareils autorisés à s'associer au Soft AP. Il existe plusieurs mécanismes pour ce faire :
- Limitez le nombre maximum de périphériques pouvant s'associer au point d'accès logiciel à l'aide de
SoftApConfiguration.Builder#setMaxNumberOfClients
. Assurez-vous de spécifier un nombre inférieur au nombre maximum de clients pris en charge par l'appareil. Vous pouvez obtenir le nombre maximum auprès deSoftApCapability#getMaxSupportedClients
. Fournissez un contrôle dynamique à l'aide de listes d'autorisation et de blocage :
- La configuration par défaut d'un point d'accès logiciel permet à tous les appareils de s'associer au point d'accès logiciel, à l'exception des appareils dont les adresses MAC sont ajoutées à
SoftApConfiguration.Builder#setBlockedClientList
. Si le Soft AP est configuré avec
SoftApConfiguration.Builder#setClientControlByUserEnabled( true )
, la liste verte est utilisée.- Tous les appareils dont les adresses MAC se trouvent dans
SoftApConfiguration.Builder#setBlockedClientList
sont bloqués pour toute association. - Tous les appareils dont les adresses MAC se trouvent dans
SoftApConfiguration.Builder#setAllowedClientList
sont autorisés à s'associer. - Tous les autres appareils (c'est-à-dire les appareils dont les adresses MAC ne figurent pas dans la liste d'autorisation ou de blocage) sont bloqués pour toute association, mais
SoftApCallback#onBlockedClientConnecting
est appelé, permettant à l'application de contrôle (c'est-à-dire l'application Paramètres) d'effectuer une action, par exemple. par exemple, demander une confirmation à l'utilisateur, puis ajouter l'appareil à la liste d'autorisation ou à la liste de blocage en fonction du comportement de l'utilisateur.
- Tous les appareils dont les adresses MAC se trouvent dans
Notez que les appareils ne peuvent utiliser la fonctionnalité de liste verte que si elle est prise en charge sur l'appareil. Vous pouvez vérifier la prise en charge des appareils à l'aide de
SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
.- La configuration par défaut d'un point d'accès logiciel permet à tous les appareils de s'associer au point d'accès logiciel, à l'exception des appareils dont les adresses MAC sont ajoutées à
Mise en œuvre
Pour prendre en charge le partage de connexion via un point d'accès ou pour prendre en charge un point d'accès local uniquement, les fabricants d'appareils doivent fournir une application de paramètres, une structure et une prise en charge HAL/micrologiciel :
Application Paramètres : L'application Paramètres AOSP fournit une base de référence pour configurer un point d'accès de partage de connexion avec le SSID et les informations d'identification de sécurité. Ce code peut être utilisé tel quel ou modifié pour fournir des fonctionnalités supplémentaires, comme décrit dans Développement d'applications avec des API de point d'accès .
Framework : le code du framework AOSP prend en charge toutes les fonctionnalités décrites dans Développement d'applications avec des API de point d'accès .
HAL/firmware pour hotspot : Soit le HIDL IHostapd.hal version 1.2 ou supérieure, soit le AIDL IHostapd.aidl .
Personnalisation
Pour personnaliser l'implémentation, les fabricants d'appareils doivent configurer les superpositions et configurations d'opérateur suivantes, qui sont documentées dans packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
-
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: L'intervalle de délai d'arrêt par défaut. Valable uniquement siSoftApConfiguration#setAutoShutdownEnabled
est activé. Peut être remplacé à l'aide deSoftApConfiguration#setShutdownTimeoutMillis
. -
config_wifiHardwareSoftapMaxClientCount
: La limitation matérielle pour le nombre maximum de clients pris en charge. Le nombre maximum de clients pris en charge par l'appareil correspond au minimum des contraintes matérielles et de l'opérateur (spécifiées parCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Le résultat final est fourni à l'application avecSoftApCapabilities#getMaxSupportedClients
. -
config_wifiSofapClientForceDisconnectSupported
: indique si l'appareil a la capacité de forcer la déconnexion d'un client. Requis pour activer les listes d'autorisation et de blocage. Communiqué à l'application de contrôle (application Paramètres) viaSoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
. - (Disponible à partir de 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Indique si la phrase secrète AP logicielle doit ou non être codable en ASCII. -
config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: s'il faut ou non mettre automatiquement à niveau la configuration des paramètres de bande vers deux bandes lors de la restauration de la configuration cloud lorsqu'un nouveau périphérique est pris en charge. - (Disponible à partir de 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: indique si le framework ajoute automatiquement les bandes inférieures à la configuration des bandes pour éviter la gestion de la coexistence. -
config_wifiSoftApDynamicCountryCodeUpdateSupported
: indique si la mise à jour dynamique du code de pays en mode AP est prise en charge ou non sur l'appareil. - Prise en charge des canaux :
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
etconfig_wifiSoftap60gChannelList
. - Prise en charge de la restauration spécifiant si les entrées correspondantes sont réinitialisées par défaut lors de la restauration de la configuration du point d'accès sur un nouveau périphérique :
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Notez que ceux-ci sont définis surtrue
par défaut, ce qui signifie que les valeurs sont réinitialisées. Ceci est critique si le nouveau périphérique ne prend pas en charge la configuration. - Capacités matérielles :
-
config_wifi_softap_acs_supported
-
config_wifi_softap_sae_supported
- (Disponible à partir de 13)
config_wifiSoftapOweTransitionSupported
- (Disponible à partir de 13)
config_wifiSoftapOweSupported
-
config_wifi_softap_ieee80211ac_supported
-
config_wifiSoftapIeee80211axSupported
- (Disponible à partir de 13)
config_wifiSoftapIeee80211beSupported
-
config_wifiSoftapMacAddressCustomizationSupported
-
config_wifiSoftapHeSuBeamformerSupported
-
config_wifiSoftapHeSuBeamformeeSupported
-
config_wifiSoftapHeMuBeamformerSupported
-
config_wifiSoftapHeTwtSupported
-
config_wifiSoftap24ghzSupported
-
config_wifiSoftap5ghzSupported
-
config_wifiSoftap6ghzSupported
-
config_wifiSoftap60ghzSupported
-
config_wifiSoftapAcsIncludeDfs
-
Validation
Android fournit un ensemble de tests unitaires, de tests d'intégration (Android Connectivity Test Suite ou ACTS) et de tests Compatibility Test Suite (CTS) pour valider la fonctionnalité de point d'accès. La fonctionnalité de point d'accès peut également être testée à l'aide de Vendor Test Suite (VTS).
Tests unitaires
Vérifiez le package de point d'accès à l'aide des tests suivants.
Tests de service :
atest packages/modules/Wifi/service/tests/wifitests/
Tests du gestionnaire :
atest packages/modules/Wifi/framework/tests/
Tests d'intégration (ACTS)
La suite de tests de point d'accès ACTS , située dans tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py
, implémente des tests fonctionnels de la fonctionnalité de point d'accès.
Tests de la suite de tests de compatibilité (CTS)
Utilisez les tests CTS pour valider la fonctionnalité de point d'accès. CTS détecte lorsque la fonctionnalité est activée et inclut automatiquement les tests associés.
Pour déclencher les tests CTS, exécutez :
atest android.net.wifi.cts.WifiManagerTest
Suite de tests des fournisseurs (VTS)
Si l'interface HIDL est implémentée, exécutez :
atest VtsHalWifiHostapdV1_2Target
Si l'interface AIDL est implémentée, exécutez :
atest VtsHalHostapdTargetTest