Android est compatible avec le point d'accès Wi-Fi (Soft AP), y compris le partage de connexion via un point d'accès Wi-Fi et les points d'accès Wi-Fi locaux uniquement.
La fonctionnalité Soft AP permet de configurer les éléments suivants :
- SSID et BSSID
- Type de sécurité (y compris WPA3)
- SSID masqué
- Bande et canal de fonctionnement (y compris ACS)
- Nombre maximal de clients autorisés
- Valeur du délai d'arrêt automatique
- Listes d'autorisation et de blocage pour permettre à l'utilisateur de contrôler les appareils associés
- Niveau de randomisation MAC pour le BSSID du point d'accès
- 802.11ax et 802.11be
Les fonctionnalités de l'appareil déterminent la disponibilité de ces commandes. Android 11 introduit des API pour obtenir ces fonctionnalités. Les fabricants d'appareils peuvent également spécifier les fonctionnalités de base de l'appareil à l'aide de superpositions.
Développer des applications avec des API de point d'accès
Une implémentation par défaut d'un point d'accès Wi-Fi partagé est fournie par l'application Paramètres du Projet Android Open Source (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 effectuer les fonctions suivantes :
Enregistrez un rappel pour obtenir les fonctionnalités de l'appareil à l'aide de
WifiManager#registerSoftApCallbackpour un point d'accès partagé ouWifiManager#registerLocalOnlyHotspotSoftApCallbackpour un point d'accès local uniquement.Le rappel
SoftApCallbackfournit les méthodes suivantes :SoftApCallback#onCapabilityChanged: fournit des informations sur les fonctionnalités de l'appareil, y compris le nombre maximal de clients compatibles et si SAE ou ACS sont compatibles.SoftApCallback#onInfoChanged: fournit des informations sur le Soft AP en cours d'exécution (valide 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 lorsqu'il est activé et désactivé.SoftApCallback#onBlockedClientConnecting: fournit les informations sur le client bloqué avec l'une des raisons suivantes : l'appareil a atteint le nombre maximal de clients qu'il peut prendre en charge ou le client n'est pas explicitement autorisé à se connecter.SoftApCallback#onClientsDisconnected: fournit une liste des clients déconnectés. Pour chaque client, vous pouvez obtenir la raison de la déconnexion.
Pour un point d'accès partagé :
- Configurez la configuration Soft AP pour le partage de connexion en appelant la
WifiManager#setSoftApConfigurationméthode et en fournissant uneSoftApConfigurationinstance. CréezSoftApConfigurationà l'aide de laSoftApConfiguration.Builderclasse. - Démarrez le partage de connexion en appelant la méthode de partage de connexion à l'adresse
TetheringManager#startTethering.
Pour un point d'accès local uniquement :
- Démarrez le point d'accès local uniquement avec une configuration Soft AP spécifique en
appelant la
WifiManager#startLocalOnlyHotspotméthode.
Implémenter des listes d'autorisation et de blocage
Une exigence typique des opérateurs consiste à fournir à l'utilisateur des commandes pour les appareils autorisés à s'associer au Soft AP. Il existe plusieurs mécanismes pour ce faire :
- Limitez le nombre maximal d'appareils pouvant s'associer au Soft AP à l'aide de
SoftApConfiguration.Builder#setMaxNumberOfClients. Veillez à spécifier un nombre inférieur au nombre maximal de clients compatibles avec l'appareil. Vous pouvez obtenir le nombre maximal à partir deSoftApCapability#getMaxSupportedClients. Fournissez un contrôle dynamique à l'aide de listes d'autorisation et de blocage :
- La configuration par défaut d'un Soft AP permet à tous les appareils de s'associer au Soft AP, à l'exception de ceux dont les adresses MAC sont ajoutées à
SoftApConfiguration.Builder#setBlockedClientList. - Si le Soft AP est configuré avec
SoftApConfiguration.Builder#setClientControlByUserEnabled(true), la liste d'autorisation est utilisée.- Tous les appareils dont les adresses MAC figurent dans
SoftApConfiguration.Builder#setBlockedClientListsont bloqués. - Tous les appareils dont les adresses MAC figurent dans
SoftApConfiguration.Builder#setAllowedClientListsont autorisés à s'associer. - Tous les autres appareils (c'est-à-dire ceux dont les adresses MAC ne figurent pas dans la liste d'autorisation ou de blocage) sont bloqués, mais
SoftApCallback#onBlockedClientConnectingest appelé, ce qui permet à l'application de contrôle (c'est-à-dire l'application Paramètres) d'effectuer une action, par exemple, demander à l'utilisateur de confirmer, 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 figurent dans
Notez que les appareils ne peuvent utiliser la fonctionnalité de liste d'autorisation que si elle est compatible avec l'appareil. Vous pouvez vérifier la compatibilité de l'appareil à l'aide de
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).- La configuration par défaut d'un Soft AP permet à tous les appareils de s'associer au Soft AP, à l'exception de ceux dont les adresses MAC sont ajoutées à
Implémentation
Pour prendre en charge le partage de connexion via un point d'accès ou un point d'accès local uniquement, les fabricants d'appareils doivent fournir une application de paramètres, un framework et une compatibilité HAL/micrologiciel :
Application Paramètres : l'application Paramètres de l'Android Open Source Project (AOSP) fournit une base de référence pour configurer un point d'accès partagé avec un SSID et des identifiants de sécurité. Ce code peut être utilisé tel quel ou modifié pour fournir des fonctionnalités supplémentaires, comme décrit dans Développer des applications avec des API de point d'accès.
Framework : le code du framework AOSP est compatible avec toutes les fonctionnalités décrites dans la section Développer des applications avec des API de point d'accès.
HAL/micrologiciel pour le point d'accès : HIDL
IHostapd.halversion 1.2 ou ultérieure, ou AIDLIHostapd.aidl.
Personnalisation
Pour personnaliser l'implémentation, nous recommandons aux fabricants d'appareils de configurer les
superpositions et les configurations d'opérateur suivantes, qui sont documentées dans
packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml :
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: intervalle de délai d'arrêt par défaut. Valide uniquement siSoftApConfiguration#setAutoShutdownEnabledest activé. Peut être remplacé à l'aide deSoftApConfiguration#setShutdownTimeoutMillis.config_wifiHardwareSoftapMaxClientCount: limite matérielle pour le nombre maximal de clients compatibles. Le nombre maximal de clients compatibles avec l'appareil est le minimum des contraintes matérielles et d'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 peut 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 la version 13)
config_wifiSoftapPassphraseAsciiEncodableCheck: indique si la phrase secrète Soft AP doit être encodable en ASCII. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: indique si la configuration des paramètres de bande doit être automatiquement mise à niveau vers deux bandes lors de la restauration de la configuration cloud lorsqu'un nouvel appareil est compatible.- (Disponible à partir de la version 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: indique si le framework ajoute automatiquement des bandes inférieures à la configuration de bande pour éviter la gestion de la coexistence. config_wifiSoftApDynamicCountryCodeUpdateSupported: indique si la mise à jour dynamique du code pays en mode AP est compatible avec l'appareil.- Compatibilité des canaux :
config_wifiSoftap2gChannelList,config_wifiSoftap5gChannelList,config_wifiSoftap6gChannelListetconfig_wifiSoftap60gChannelList. - Compatibilité de la restauration indiquant 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 nouvel appareil :
config_wifiSoftapResetChannelConfig,config_wifiSoftapResetHiddenConfig,config_wifiSoftapResetUserControlConfig,config_wifiSoftapResetAutoShutdownTimerConfig,config_wifiSoftapResetMaxClientSettingConfig. Notez que ces paramètres sont définis surtruepar défaut, ce qui signifie que les valeurs sont réinitialisées. Ceci est essentiel si le nouvel appareil n'est pas compatible avec la configuration. - Fonctionnalités matérielles :
config_wifi_softap_acs_supportedconfig_wifi_softap_sae_supported- (Disponible à partir de la version 13)
config_wifiSoftapOweTransitionSupported - (Disponible à partir de la version 13)
config_wifiSoftapOweSupported config_wifi_softap_ieee80211ac_supportedconfig_wifiSoftapIeee80211axSupported- (Disponible à partir de la version 13)
config_wifiSoftapIeee80211beSupported config_wifiSoftapMacAddressCustomizationSupportedconfig_wifiSoftapHeSuBeamformerSupportedconfig_wifiSoftapHeSuBeamformeeSupportedconfig_wifiSoftapHeMuBeamformerSupportedconfig_wifiSoftapHeTwtSupportedconfig_wifiSoftap24ghzSupportedconfig_wifiSoftap5ghzSupportedconfig_wifiSoftap6ghzSupportedconfig_wifiSoftap60ghzSupportedconfig_wifiSoftapAcsIncludeDfs
Validation
Android fournit un ensemble de tests unitaires 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 la 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 Compatibility Test Suite (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 la commande suivante :
atest android.net.wifi.cts.WifiManagerTestVendor Test Suite (VTS)
Si l'interface HIDL est implémentée, exécutez la commande suivante :
atest VtsHalWifiHostapdV1_2TargetSi l'interface AIDL est implémentée, exécutez la commande suivante :
atest VtsHalHostapdTargetTest