Point d'accès Wi-Fi (Soft AP)

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 des points d'accès Wi-Fi locaux uniquement.

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 de fonctionnement et canal (y compris ACS)
  • Nombre maximal de clients autorisés
  • Valeur du délai d'arrêt automatique
  • Ajouter des listes d'autorisation et de blocage pour permettre aux utilisateurs de contrôler les appareils associés
  • Niveau de randomisation MAC pour le BSSID du point d'accès
  • 802.11ax et 802.11be

La disponibilité de ces commandes dépend des capacités de l'appareil. Android 11 introduit des API pour obtenir ces des fonctionnalités. Les fabricants d'appareils peuvent également spécifier les capacité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 afin que seule l'application Paramètres du système puisse y accéder.

Développer des applications avec les API des points d'accès

Une implémentation par défaut d'un point d'accès Wi-Fi partagé est fournie par l'AOSP Paramètres de l'application, mais elle n'utilise pas toutes les API pour Soft AP. configuration.

Pour permettre le partage de connexion via un point d'accès ou un point d'accès local uniquement : L'application doit remplir les fonctions suivantes:

  1. Enregistrez un rappel pour obtenir les fonctionnalités de l'appareil à l'aide de WifiManager#registerSoftApCallback pour un point d'accès partagé WifiManager#registerLocalOnlyHotspotSoftApCallback pour une session locale uniquement point d'accès.

    Le rappel SoftApCallback fournit les méthodes suivantes:

    • SoftApCallback#onCapabilityChanged: Fournit des informations sur les fonctionnalités de l'appareil, y compris les capacités maximales le nombre de clients compatibles, et si SAE ou ACS sont pris en charge.
    • SoftApCallback#onInfoChanged: Fournit des informations sur le point d'accès partiel en cours d'exécution (valide une seule fois 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 Rappel TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged: Fournit des mises à jour sur l'état du point d'accès logiciel à mesure qu'il est activé et est désactivé.
    • SoftApCallback#onBlockedClientConnecting: Fournit les informations sur le client bloqué avec l'un des éléments suivants : motifs de blocage: l'appareil a atteint le nombre maximal qu'il peut prendre en charge ou si le client n'est pas explicitement autorisé se connectent.

Pour un point d'accès partagé:

  1. Configurez la configuration du point d'accès logiciel pour le partage de connexion en appelant la WifiManager#setSoftApConfiguration et en fournissant une instance SoftApConfiguration. Construire SoftApConfiguration à l'aide de SoftApConfiguration.Builder .
  2. Démarrez le partage de connexion en appelant la méthode de partage à TetheringManager#startTethering

Pour un point d'accès local uniquement:

  1. Démarrez le point d'accès local uniquement avec une configuration du point d'accès logiciel spécifique en en appelant la méthode WifiManager#startLocalOnlyHotspot .

Implémenter des listes d'autorisation et de blocage

En règle générale, les opérateurs doivent permettre à l'utilisateur de contrôler les périphériques qui sont autorisés à s'associer au point d'accès logiciel. Il existe plusieurs différents mécanismes:

  • Limiter le nombre maximal d'appareils pouvant être associés au point d'accès logiciel avec SoftApConfiguration.Builder#setMaxNumberOfClients. Veillez à Spécifiez un nombre inférieur au nombre maximal de clients pris en charge par l'appareil. Vous pouvez obtenir le nombre maximal SoftApCapability#getMaxSupportedClients
  • Offrez un contrôle dynamique à l'aide de listes d'autorisation et de blocage:

    • La configuration par défaut d'un point d'accès permet à tous les appareils associer au point d'accès logiciel, sauf pour les appareils dont les adresses MAC sont ajouté à SoftApConfiguration.Builder#setBlockedClientList.
    • Si le point d'accès soft est configuré avec SoftApConfiguration.Builder#setClientControlByUserEnabled(true), la liste d'autorisation est utilisée.

      • Tous les appareils dont l'adresse MAC se trouve dans SoftApConfiguration.Builder#setBlockedClientList ne sont pas autorisés à l'association.
      • Tous les appareils dont l'adresse MAC se trouve dans SoftApConfiguration.Builder#setAllowedClientList sont autorisés l'association.
      • Tous les autres appareils (c'est-à-dire ceux dont l'adresse MAC qui ne figurent pas sur la liste d'autorisation ou de blocage) sont bloqués. association, mais SoftApCallback#onBlockedClientConnecting est ce qui permet à l'application de contrôle (c'est-à-dire l'application Paramètres) de effectuer une action, par exemple demander confirmation à l'utilisateur et puis en ajoutant l'appareil à la liste d'autorisation ou de blocage en fonction du comportement de l'utilisateur.

    Notez que les appareils ne peuvent utiliser la fonctionnalité de liste d'autorisation que compatibles avec l'appareil. Vous pouvez vérifier la compatibilité de votre appareil avec SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)

Implémentation

Pour permettre 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 l'application Paramètres, le framework et compatibilité HAL/micrologiciel:

Personnalisation

Pour personnaliser l'implémentation, les fabricants d'appareils doivent configurer des superpositions et des configurations d'opérateurs, décrites dans packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: valeur par défaut délai avant expiration de l'arrêt. Valide uniquement si SoftApConfiguration#setAutoShutdownEnabled est activé. Peut être ignoré avec SoftApConfiguration#setShutdownTimeoutMillis.
  • config_wifiHardwareSoftapMaxClientCount: limitation matérielle pour le nombre maximal de clients compatibles. Le nombre maximal de clients pris en charge par l'appareil correspond au minimum du matériel et de l'opérateur (spécifiées par CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Le résultat final est fourni à l'application avec SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: indique si l'appareil a la possibilité de forcer la déconnexion d’un client. Obligatoire pour activer l'autorisation et les listes de blocage. Elle est communiquée à l'application de contrôle (application Paramètres) via SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
  • (À partir de 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Indique si la phrase secrète du point d'accès logiciel doit être encodable en ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: indique si oui ou non pour passer automatiquement à la configuration double bande restaurer la configuration cloud lorsqu'un nouvel appareil est pris en charge.
  • (À 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: dynamique ou non la mise à jour du code pays en mode AP est prise en charge sur l'appareil
  • Canal disponible: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList et config_wifiSoftap60gChannelList
  • Restaurer la prise en charge 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 qu'ils sont définis sur true par 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.
  • Capacités matérielles: <ph type="x-smartling-placeholder">
      </ph>
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (À partir de 13) config_wifiSoftapOweTransitionSupported
    • (À partir de 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (À 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 et de tests de la suite de tests de compatibilité (CTS) pour valider la fonctionnalité de zone cliquable. La fonctionnalité de point d'accès peut également être testée la suite de test fournisseur (VTS).

Tests unitaires

Vérifiez le package de point d'accès à l'aide des tests suivants.

  • Tests du service:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Tests du responsable:

    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 les tests associés.

Pour déclencher les tests CTS, exécutez la commande suivante:

atest android.net.wifi.cts.WifiManagerTest

Suite de test pour les fournisseurs (VTS)

Si l'interface HIDL est implémentée, exécutez la commande suivante:

atest VtsHalWifiHostapdV1_2Target

Si l'interface AIDL est implémentée, exécutez la commande suivante:

atest VtsHalHostapdTargetTest