Android unterstützt WLAN-Hotspots (SoftAP), einschließlich Tethering über einen WLAN-Hotspot und lokal beschränkte WLAN-Hotspots.
Die Soft-AP-Funktion ermöglicht die Konfiguration der folgenden Elemente:
- SSID und BSSID
- Sicherheitstyp (einschließlich WPA3)
- SSID ausgeblendet
- Betriebsfrequenzband und ‑kanal (einschließlich ACS)
- Maximale Anzahl zulässiger Clients
- Zeitüberschreitungswert für das automatische Herunterfahren
- Zulassungs- und Sperrliste zur Nutzersteuerung verknüpfter Geräte
- Grad der MAC‑Randomisierung für die BSSID des Access Points
- 802.11ax und 802.11be
Die Verfügbarkeit dieser Steuerelemente hängt von den Gerätefunktionen ab. In Android 11 werden APIs eingeführt, mit denen diese Funktionen abgerufen werden können. Gerätehersteller können auch mithilfe von Overlays grundlegende Gerätefunktionen angeben.
Einige der APIs sind System-APIs und sind durch Berechtigungen eingeschränkt, sodass nur die Einstellungen-App des Systems darauf zugreifen kann.
Apps mit Hotspot-APIs entwickeln
Die AOSP-Einstellungen-App bietet eine Standardimplementierung eines per Tethering verbundenen WLAN-Hotspots. Dabei werden jedoch nicht alle APIs für die Soft-AP-Konfiguration verwendet.
Damit Tethering über einen Hotspot oder einen lokalen Hotspot unterstützt wird, muss die App die folgenden Funktionen ausführen:
Registrieren Sie einen Callback, um die Gerätefunktionen mit
WifiManager#registerSoftApCallback
für einen Tethering-Hotspot oder mitWifiManager#registerLocalOnlyHotspotSoftApCallback
für einen Nur-lokal-Hotspot abzurufen.Der
SoftApCallback
-Callback bietet die folgenden Methoden:SoftApCallback#onCapabilityChanged
: Enthält Informationen zu Gerätefunktionen, einschließlich der maximalen Anzahl unterstützter Clients und ob SAE oder ACS unterstützt werden.SoftApCallback#onInfoChanged
: Liefert Informationen zum ausgeführten Soft-AP (nur gültig, wenn er gestartet wurde), einschließlich Band- und Frequenzinformationen.SoftApCallback#onConnectedClientsChanged
: Stellt eine Liste der verbundenen Clients bereit. Für jeden Client können Sie die MAC-Adresse abrufen. Verwenden Sie denTetheringEventCallback#onClientsChanged
-Callback, um die IP-Informationen abzurufen.SoftApCallback#onStateChanged
: Stellt Updates zum Status des Soft-AP bereit, wenn er aktiviert und deaktiviert wird.SoftApCallback#onBlockedClientConnecting
: Stellt die Informationen zum blockierten Client mit einem der folgenden Gründe für die Blockierung bereit: Das Gerät hat die maximale Anzahl von Clients erreicht, die es unterstützen kann, oder der Client ist nicht explizit für die Verbindung autorisiert.SoftApCallback#onClientsDisconnected
: Stellt eine Liste der getrennten Clients bereit. Für jeden Client können Sie den Grund für die Trennung abrufen.
Für einen Hotspot mit Tethering:
- Konfigurieren Sie die Soft-AP-Konfiguration für Tethering, indem Sie die Methode
WifiManager#setSoftApConfiguration
aufrufen und eineSoftApConfiguration
-Instanz bereitstellen. Erstellen SieSoftApConfiguration
mit der KlasseSoftApConfiguration.Builder
. - Starten Sie das Tethering, indem Sie die Tethering-Methode unter
TetheringManager#startTethering
aufrufen.
Nur lokaler Hotspot:
- Starten Sie den Hotspot, der nur lokal verfügbar ist, mit einer bestimmten Soft-AP-Konfiguration, indem Sie die Methode
WifiManager#startLocalOnlyHotspot
aufrufen.
Zulassungs- und Sperrlisten implementieren
Eine typische Anforderung von Mobilfunkanbietern ist, dem Nutzer die Möglichkeit zu geben, die Geräte zu steuern, die mit dem Soft-AP verbunden werden dürfen. Dafür gibt es mehrere Möglichkeiten:
- Beschränken Sie die maximale Anzahl der Geräte, die über
SoftApConfiguration.Builder#setMaxNumberOfClients
mit dem Soft-AP verknüpft werden können. Geben Sie eine Zahl an, die niedriger ist als die maximale Anzahl von Clients, die vom Gerät unterstützt werden. Die maximale Anzahl finden Sie unterSoftApCapability#getMaxSupportedClients
. Dynamische Steuerung über Zulassungs- und Sperrlisten:
- Die Standardkonfiguration eines Soft-AP ermöglicht es allen Geräten, sich mit dem Soft-AP zu verbinden, mit Ausnahme von Geräten, deren MAC-Adressen zu
SoftApConfiguration.Builder#setBlockedClientList
hinzugefügt wurden. Wenn der Soft-AP mit
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
konfiguriert ist, wird die Zulassungsliste verwendet.- Alle Geräte, deren MAC-Adressen in
SoftApConfiguration.Builder#setBlockedClientList
enthalten sind, werden von der Zuordnung ausgeschlossen. - Alle Geräte, deren MAC-Adressen in
SoftApConfiguration.Builder#setAllowedClientList
enthalten sind, dürfen verbunden werden. - Alle anderen Geräte (d. h. Geräte, deren MAC-Adressen nicht in der Zulassungs- oder Sperrliste enthalten sind) werden von der Zuordnung ausgeschlossen, aber
SoftApCallback#onBlockedClientConnecting
wird aufgerufen, sodass die Steuerungs-App (d. h. die Einstellungen) eine Aktion ausführen kann, z. B. den Nutzer um Bestätigung bitten und das Gerät dann je nach Nutzerverhalten der Zulassungs- oder Sperrliste hinzufügen.
- Alle Geräte, deren MAC-Adressen in
Die Zulassungslistenfunktion kann nur auf Geräten verwendet werden, die sie unterstützen. Sie können die Geräteunterstützung mit
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
prüfen.- Die Standardkonfiguration eines Soft-AP ermöglicht es allen Geräten, sich mit dem Soft-AP zu verbinden, mit Ausnahme von Geräten, deren MAC-Adressen zu
Implementierung
Damit Geräte das Tethering über einen Hotspot oder einen Nur-lokal-Hotspot unterstützen, müssen Gerätehersteller die Einstellungen App, das Framework und die HAL-/Firmware-Unterstützung bereitstellen:
Einstellungen:Die AOSP-Einstellungen bieten eine Grundlage für die Konfiguration eines Tethering-Hotspots mit SSID und Sicherheitsanmeldedaten. Dieser Code kann unverändert verwendet oder geändert werden, um zusätzliche Funktionen bereitzustellen, wie unter Apps mit Hotspot-APIs entwickeln beschrieben.
Framework:Der AOSP-Framework-Code unterstützt alle Funktionen, die unter Apps mit Hotspot-APIs entwickeln beschrieben werden.
HAL/Firmware für Hotspot:Entweder die HIDL-Version
IHostapd.hal
1.2 oder höher oder die AIDL-VersionIHostapd.aidl
.
Personalisierung
Um die Implementierung anzupassen, sollten Gerätehersteller die folgenden Overlays und Mobilfunkanbieterkonfigurationen konfigurieren, die in packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
dokumentiert sind:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: Das Standard-Zeitlimitintervall für das Herunterfahren. Nur gültig, wennSoftApConfiguration#setAutoShutdownEnabled
aktiviert ist. Kann mitSoftApConfiguration#setShutdownTimeoutMillis
überschrieben werden.config_wifiHardwareSoftapMaxClientCount
: Die Hardwarebeschränkung für die maximale Anzahl unterstützter Clients. Die maximale Anzahl von Clients, die das Gerät unterstützt, ist das Minimum der Hardware- und Mobilfunkanbieterbeschränkungen (angegeben durchCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Das Endergebnis wird der App mitSoftApCapabilities#getMaxSupportedClients
bereitgestellt.config_wifiSofapClientForceDisconnectSupported
: Gibt an, ob das Gerät die Verbindung zu einem Client erzwingen kann. Erforderlich, um Zulassungs- und Sperrlisten zu aktivieren. Wird überSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
an die Steuerungs-App (Einstellungen) gesendet.- (Verfügbar ab API-Level 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Gibt an, ob die Soft-AP-Passphrase ASCII-codierbar sein muss. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: Gibt an, ob die Konfiguration der Bandeinstellung bei der Wiederherstellung der Cloud-Konfiguration automatisch auf Dualband aktualisiert werden soll, wenn ein neues Gerät unterstützt wird.- (Ab Version 13 verfügbar)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Gibt an, ob das Framework der Bandkonfiguration automatisch niedrigere Bänder hinzufügt, um die Verarbeitung der Koexistenz zu vermeiden. config_wifiSoftApDynamicCountryCodeUpdateSupported
: Gibt an, ob dynamische Aktualisierungen des Ländercodes im AP-Modus auf dem Gerät unterstützt werden.- Unterstützte Channels:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
undconfig_wifiSoftap60gChannelList
. - „Restore“ gibt an, ob die entsprechenden Einträge beim Wiederherstellen der Hotspot-Konfiguration auf einem neuen Gerät auf die Standardeinstellungen zurückgesetzt werden:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Diese sind standardmäßig auftrue
festgelegt, d. h., die Werte werden zurückgesetzt. Das ist wichtig, wenn das neue Gerät die Konfiguration nicht unterstützt. - Hardwarefunktionen:
config_wifi_softap_acs_supported
config_wifi_softap_sae_supported
- (Verfügbar ab Version 13)
config_wifiSoftapOweTransitionSupported
- (Verfügbar ab Version 13)
config_wifiSoftapOweSupported
config_wifi_softap_ieee80211ac_supported
config_wifiSoftapIeee80211axSupported
- (Verfügbar ab Version 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-Tests und CTS-Tests (Compatibility Test Suite), um die Hotspot-Funktion zu validieren. Die Hotspot-Funktion kann auch mit der Vendor Test Suite (VTS) getestet werden.
Einheitentests
Prüfen Sie das Hotspot-Paket mit den folgenden Tests.
Diensttests:
atest packages/modules/Wifi/service/tests/wifitests/
Manager-Tests:
atest packages/modules/Wifi/framework/tests/
CTS-Tests (Compatibility Test Suite)
Verwenden Sie CTS-Tests, um die Hotspot-Funktion zu validieren. Das CTS erkennt, wenn die Funktion aktiviert ist, und bezieht die zugehörigen Tests automatisch ein.
Führen Sie Folgendes aus, um die CTS-Tests auszulösen:
atest android.net.wifi.cts.WifiManagerTest
Vendor Test Suite (VTS)
Wenn die HIDL-Schnittstelle implementiert ist, führen Sie Folgendes aus:
atest VtsHalWifiHostapdV1_2Target
Wenn die AIDL-Schnittstelle implementiert ist, führen Sie Folgendes aus:
atest VtsHalHostapdTargetTest