Android est compatible avec les points 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.
La fonctionnalité de point d'accès logiciel 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
- Liste d'autorisation et de blocage pour permettre aux utilisateurs de contrôler les appareils associés
- Niveau de sélection aléatoire de l'adresse MAC pour le BSSID de l'AP
- 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 des appareils à l'aide de superpositions.
Notez que certaines API sont des API système dont l'accès est limité via des autorisations afin que seule l'application Paramètres du système puisse y accéder.
Développer des applications avec les API de point d'accès
Une implémentation par défaut d'un point d'accès Wi-Fi associé est fournie par l'application Paramètres AOSP. Toutefois, elle n'exerce pas toutes les API pour la configuration du point d'accès logiciel.
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#registerSoftApCallback
pour un point d'accès partagé ou deWifiManager#registerLocalOnlyHotspotSoftApCallback
pour un point d'accès local uniquement.Le rappel
SoftApCallback
fournit 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 point d'accès logiciel en cours d'exécution (uniquement valide une fois démarré), y compris des informations sur la bande et la fréquence.SoftApCallback#onConnectedClientsChanged
: fournit la liste des clients connectés. Pour chaque client, vous pouvez obtenir l'adresse MAC. Pour obtenir les informations sur l'adresse IP, utilisez le rappelTetheringEventCallback#onClientsChanged
.SoftApCallback#onStateChanged
: fournit des informations sur l'état du point d'accès logiciel 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.
Pour un point d'accès partagé:
- Configurez la configuration du point d'accès virtuel pour le partage de connexion en appelant la méthode
WifiManager#setSoftApConfiguration
et en fournissant une instanceSoftApConfiguration
. CréezSoftApConfiguration
à l'aide de la classeSoftApConfiguration.Builder
. - 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 de point d'accès logiciel spécifique en appelant la méthode
WifiManager#startLocalOnlyHotspot
.
Implémenter des listes d'autorisation et de blocage
Une exigence typique du transporteur consiste à fournir à l'utilisateur des commandes des appareils autorisés à s'associer au point d'accès logiciel. Pour ce faire, il existe plusieurs mécanismes:
- Limitez le nombre maximal d'appareils pouvant s'associer au point d'accès logiciel à l'aide de
SoftApConfiguration.Builder#setMaxNumberOfClients
. Veillez à spécifier un nombre inférieur au nombre maximal de clients pris en charge par l'appareil. Vous pouvez obtenir le nombre maximal à partir deSoftApCapability#getMaxSupportedClients
. Assurez 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 à celui-ci, à l'exception des appareils dont les adresses MAC sont ajoutées à
SoftApConfiguration.Builder#setBlockedClientList
. Si le point d'accès logiciel est configuré avec
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
, la liste d'autorisation est utilisée.- L'association est bloquée pour tous les appareils dont les adresses MAC se trouvent dans
SoftApConfiguration.Builder#setBlockedClientList
. - L'association est autorisée pour tous les appareils dont les adresses MAC se trouvent dans
SoftApConfiguration.Builder#setAllowedClientList
. - L'association de tous les autres appareils (c'est-à-dire les appareils dont les adresses MAC ne figurent pas dans la liste d'autorisation ou de blocage) est bloquée, mais
SoftApCallback#onBlockedClientConnecting
est appelé, ce qui permet à l'application de contrôle (c'est-à-dire l'application Paramètres) d'effectuer une action, par exemple, de demander à l'utilisateur une confirmation, puis d'ajouter l'appareil à la liste d'autorisation ou à la liste de blocage en fonction du comportement de l'utilisateur.
- L'association est bloquée pour tous les appareils dont les adresses MAC se trouvent dans
Notez que les appareils ne peuvent utiliser la fonctionnalité de liste d'autorisation que si elle est compatible avec eux. 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 point d'accès logiciel permet à tous les appareils de s'associer à celui-ci, à l'exception des appareils 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 l'application Paramètres, le framework et la compatibilité du micrologiciel/HAL:
Application Paramètres:l'application Paramètres AOSP fournit une référence pour configurer un point d'accès de partage de connexion 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 la section Développer des applications avec les 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 les API de point d'accès.
HAL/micrologiciel pour le point d'accès:soit IHostapd.hal version 1.2 ou ultérieure de HIDL, soit IHostapd.aidl d'AIDL.
Personnalisation
Pour personnaliser l'implémentation, les fabricants d'appareils doivent configurer les superpositions et les configurations de l'opérateur suivantes, qui sont documentées dans packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: intervalle de délai avant expiration de l'arrêt par défaut. Valide uniquement siSoftApConfiguration#setAutoShutdownEnabled
est activé. Peut être remplacé à l'aide deSoftApConfiguration#setShutdownTimeoutMillis
.config_wifiHardwareSoftapMaxClientCount
: limite matérielle pour le nombre maximal de clients pris en charge. Le nombre maximal de clients compatibles avec l'appareil correspond au minimum des contraintes matérielles et du transporteur (spécifié 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. Nécessaire 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)
.- (À partir de la version 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: indique si la phrase secrète du point d'accès virtuel doit être encodable en ASCII. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: Indique si la configuration des paramètres de bande doit être automatiquement migrée vers les bandes duales lors de la restauration de la configuration dans le cloud lorsqu'un nouvel appareil est compatible.- (Disponible à partir de 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: indique si le framework ajoute automatiquement des bandes inférieures à la configuration des bandes pour éviter la gestion de la coexistence. config_wifiSoftApDynamicCountryCodeUpdateSupported
: indique si la mise à jour dynamique du code pays en mode point d'accès est prise en charge sur l'appareil- Compatibilité avec les canaux:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
etconfig_wifiSoftap60gChannelList
. - Prise en charge 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
etconfig_wifiSoftapResetMaxClientSettingConfig
. Notez qu'ils sont définis surtrue
par défaut, ce qui signifie qu'ils sont réinitialisés. Cette étape est essentielle si le nouvel appareil n'est pas compatible avec la configuration. - Fonctionnalités matérielles :
config_wifi_softap_acs_supported
config_wifi_softap_sae_supported
- (À partir de 13)
config_wifiSoftapOweTransitionSupported
- (Disponible à partir de la version 13)
config_wifiSoftapOweSupported
config_wifi_softap_ieee80211ac_supported
config_wifiSoftapIeee80211axSupported
- (Disponible à partir de la version 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 et de tests CTS (Compatibility Test Suite) 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 suite de test de fournisseur (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 administrateur:
atest packages/modules/Wifi/framework/tests/
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 quand 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.WifiManagerTest
Suite de test de fournisseur (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