WLAN-Hotspot (Soft AP)

Android unterstützt WLAN-Hotspots (Soft-AP) einschließlich Tethering über einen WLAN-Hotspot und ausschließlich lokal verfügbare WLAN-Hotspots.

Mit der weichen ZP-Funktion kann Folgendes konfiguriert werden:

  • SSID und BSSID
  • Sicherheitstyp (einschließlich WPA3)
  • Ausgeblendete SSID
  • Betriebssystem und Kanal (einschließlich ACS)
  • Maximale Anzahl der zulässigen Clients
  • Wert für das Zeitlimit für das automatische Herunterfahren
  • Mit einer Zulassungsliste und einer Sperrliste können Nutzer verbundene Geräte steuern
  • Ebene der MAC-Randomisierung für die AP-BSSID
  • 802.11ax und 802.11be

Ob diese Steuerelemente verfügbar sind, hängt von den Gerätefunktionen ab. Android 11 führt APIs ein, um diese Funktionen. Gerätehersteller können auch grundlegende Gerätefunktionen festlegen. mithilfe von Overlays.

Beachten Sie, dass einige der APIs System-APIs sind und durch Berechtigungen erteilen, damit nur die App „Einstellungen“ des Systems darauf zugreifen kann.

Anwendungen mit Hotspot-APIs entwickeln

Eine Standardimplementierung eines per Tethering angeschlossenen WLAN-Hotspots wird vom AOSP bereitgestellt. App „Einstellungen“, verwendet jedoch nicht alle APIs für Soft AP Konfiguration.

Um Tethering über einen Hotspot oder einen nur lokalen Hotspot zu unterstützen, muss die App die folgenden Funktionen ausführen:

  1. Registrieren Sie einen Callback, um die Gerätefunktionen mithilfe von WifiManager#registerSoftApCallback für einen Tethering-Hotspot oder WifiManager#registerLocalOnlyHotspotSoftApCallback für reinen lokalen Markt Hotspot.

    Der SoftApCallback-Callback bietet die folgenden Methoden:

    • SoftApCallback#onCapabilityChanged: Liefert Informationen zu Gerätefunktionen, einschließlich der maximalen Anzahl der unterstützten Clients und ob SAE oder ACS unterstützt wird.
    • SoftApCallback#onInfoChanged: Stellt Informationen zum ausgeführten Soft-AP bereit (nur einmal gültig) beginnen), einschließlich Informationen zum Band und zur Frequenz.
    • SoftApCallback#onConnectedClientsChanged: Stellt eine Liste der verbundenen Clients bereit. Für jeden Kunden erhalten Sie die MAC-Adresse. Verwenden Sie zum Abrufen der IP-Informationen die Methode TetheringEventCallback#onClientsChanged-Callback.
    • SoftApCallback#onStateChanged: Liefert Updates zum Status des Soft-Zugangspunkts, sobald er aktiviert wird und deaktiviert.
    • SoftApCallback#onBlockedClientConnecting: Stellt die blockierten Clientinformationen mit einem der folgenden Elemente bereit Gründe für die Blockierung: Das Gerät hat die maximale Anzahl an Kunden, die unterstützt werden können, oder für die der Kunde nicht explizit autorisiert ist, verbinden können.

Für einen Tethering-Hotspot:

  1. Konfigurieren Sie die Soft-AP-Konfiguration für Tethering, indem Sie die WifiManager#setSoftApConfiguration und eine SoftApConfiguration-Instanz angeben. Bauen SoftApConfiguration mit dem SoftApConfiguration.Builder .
  2. Starten Sie das Tethering, indem Sie die Tethering-Methode unter aufrufen. TetheringManager#startTethering

Für reinen lokalen Hotspot:

  1. Starten Sie den nur lokalen Hotspot mit einer bestimmten Soft-AP-Konfiguration, das Aufrufen der WifiManager#startLocalOnlyHotspot .

Zulassungs- und Sperrlisten implementieren

Eine typische Anforderung des Mobilfunkanbieters besteht darin, dem Nutzer Kontrollmöglichkeiten über die Geräte, die mit dem Soft AP verknüpft werden können. Es gibt mehrere Mechanismen:

  • Maximale Anzahl von Geräten beschränken, die mit dem weichen ZP verknüpft werden können mit SoftApConfiguration.Builder#setMaxNumberOfClients. Achten Sie darauf, Geben Sie eine Zahl an, die unter der maximalen Anzahl von unterstützten Clients liegt vom Gerät berechnet wird. Die maximale Anzahl erhalten Sie unter SoftApCapability#getMaxSupportedClients
  • Mithilfe von Zulassungs- und Sperrlisten können Sie dynamische Steuerelemente nutzen:

    • In der Standardkonfiguration eines Soft-Zugangspunkts können alle Geräte die mit dem Soft-AP verknüpft sind, außer für Geräte, deren MAC-Adressen zu SoftApConfiguration.Builder#setBlockedClientList hinzugefügt.
    • Wenn der Soft-Zugangspunkt konfiguriert ist mit SoftApConfiguration.Builder#setClientControlByUserEnabled(true), die Zulassungsliste verwendet.

      • Alle Geräte mit MAC-Adressen SoftApConfiguration.Builder#setBlockedClientList wird blockiert von Verknüpfung.
      • Alle Geräte mit MAC-Adressen SoftApConfiguration.Builder#setAllowedClientList sind erlaubt Verknüpfung.
      • Alle anderen Geräte, d. h. Geräte, deren MAC-Adressen nicht auf der Zulassungs- oder Sperrliste stehen) Verknüpfung, aber SoftApCallback#onBlockedClientConnecting ist Dadurch kann die steuernde App (d. h. die App "Einstellungen") eine Aktion ausführen, z. B. die Nutzenden um Bestätigung bitten und Setzen Sie das Gerät dann auf die Zulassungsliste oder die Sperrliste. je nach Nutzerverhalten.

    Die Zulassungsliste kann nur verwendet werden, wenn die auf dem Gerät unterstützt werden. Sie können die Geräteunterstützung mit SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)

Implementierung

Um Tethering über einen Hotspot oder einen nur lokalen Hotspot zu unterstützen, Gerätehersteller müssen Einstellungen, Framework und HAL/Firmware-Unterstützung:

  • App „Einstellungen“:Die App „AOSP Settings“ bietet eine grundlegende Konfiguration für die einen Tethering-Hotspot mit SSID und Sicherheitsanmeldedaten. Dieser Code kann wie sie verwendet oder modifiziert werden, um wie beschrieben zusätzliche Funktionen bereitzustellen. in Anwendungen mit Hotspot-APIs entwickeln.

  • Framework:Der AOSP-Frameworkcode unterstützt alle Funktionen. wie unter Apps mit Hotspot-APIs entwickeln beschrieben.

  • HAL/Firmware für Hotspot: Entweder das HIDL iHostapd.hal Version 1.2 oder höher oder die AIDL IHostapd.aidl.

Personalisierung

Um die Implementierung anzupassen, sollten Gerätehersteller die folgenden Overlays und Mobilfunkanbieter-Konfigurationen, die in packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Der Standardwert Zeitüberschreitungsintervall für das Herunterfahren. Nur gültig, wenn SoftApConfiguration#setAutoShutdownEnabled ist aktiviert. Kann überschrieben werden mit SoftApConfiguration#setShutdownTimeoutMillis.
  • config_wifiHardwareSoftapMaxClientCount: Die Hardwareeinschränkung für Maximale Anzahl unterstützter Clients. Die maximale Anzahl von Clients die das Gerät unterstützt, ist die Mindestanzahl an Hardware- und Einschränkungen (definiert durch CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT. Das Endergebnis wird der App mit SoftApCapabilities#getMaxSupportedClients bereitgestellt.
  • config_wifiSofapClientForceDisconnectSupported: Gibt an, ob das Gerät die Möglichkeit, das Trennen eines Clients zu erzwingen. Zum Aktivieren des Zulassens erforderlich und Blockierungslisten. Wird der steuernden App (App „Einstellungen“) über SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
  • (Erhältlich ab 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Gibt an, ob die weiche AP-Passphrase für ASCII-Codierung erforderlich ist.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Gibt an, ob oder nicht , um die Konfiguration der Bandeinstellung während der Ausführungsphase die Wiederherstellung der Cloud-Konfiguration, wenn ein neues Gerät unterstützt wird.
  • (Erhältlich ab 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Gibt an, ob das Framework die unteren Bänder automatisch an die Bandkonfiguration anfügt um eine Koexistenz zu vermeiden.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: gibt an, ob dynamisch oder nicht Die Aktualisierung des Ländercodes im AP-Modus wird auf dem Gerät unterstützt.
  • Kanalunterstützung: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList und config_wifiSoftap60gChannelList.
  • Unterstützung für das Wiederherstellen des Angebens, ob die entsprechenden Einträge zurückgesetzt werden beim Wiederherstellen der Hotspot-Konfiguration auf einem neuen Gerät auf die Standardeinstellung: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig Diese sind auf Standardmäßig true, d. h., die Werte werden zurückgesetzt. Das ist wichtig, wenn unterstützt das neue Gerät die Konfiguration nicht.
  • Hardwarefunktionen: <ph type="x-smartling-placeholder">
      </ph>
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Erhältlich ab 13) config_wifiSoftapOweTransitionSupported
    • (Erhältlich ab 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Erhältlich ab 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Zertifizierungsstufe

Android bietet eine Reihe von Unit- und Compatibility Test Suite-Tests (CTS). um die Hotspot-Funktion zu überprüfen. Die Hotspot-Funktion kann auch mit die Vendor Test Suite (VTS).

Einheitentests

Prüfen Sie das Hotspot-Paket mit den folgenden Tests.

  • Diensttests:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Tests für Manager:

    atest packages/modules/Wifi/framework/tests/
    

CTS-Tests (Compatibility Test Suite)

Verwenden Sie CTS-Tests, um die Hotspot-Funktion zu prüfen. CTS erkennt, wenn die Funktion aktiviert ist, und schließt automatisch zugehöriger Tests.

Führen Sie folgenden Befehl aus, um die CTS-Tests auszulösen:

atest android.net.wifi.cts.WifiManagerTest

Anbieter-Test-Suite (VTS)

Wenn die HIDL-Schnittstelle implementiert ist, führe folgenden Befehl aus:

atest VtsHalWifiHostapdV1_2Target

Wenn die AIDL-Schnittstelle implementiert ist, führen Sie Folgendes aus:

atest VtsHalHostapdTargetTest