Android unterstützt WLAN-Hotspots (Soft-AP), einschließlich Tethering über einen WLAN-Hotspot und lokal begrenzte WLAN-Hotspots.
Mit der Soft-AP-Funktion können Sie Folgendes konfigurieren:
- SSID und BSSID
- Sicherheitstyp (einschließlich WPA3)
- Ausgeblendete SSID
- Betriebsband und -kanal (einschließlich ACS)
- Maximale Anzahl zulässiger Clients
- Wert für die Zeitüberschreitung beim automatischen Herunterfahren
- Zulassungs- und Sperrlisten, um Nutzern die Kontrolle über zugehörige Geräte zu ermöglichen
- MAC-Zufallsmix für die BSSID des ZP
- 802.11ax und 802.11be
Die Verfügbarkeit dieser Steuerelemente hängt von den Gerätefunktionen ab. Android 11 bietet APIs, mit denen Sie diese Funktionen nutzen können. Gerätehersteller können auch Basisgerätefunktionen mithilfe von Overlays angeben.
Einige der APIs sind System-APIs und werden 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 Tethered-WLAN-Hotspots. Allerdings werden dabei nicht alle APIs für die Soft-AP-Konfiguration verwendet.
Damit Tethering über einen Hotspot oder einen lokal begrenzten Hotspot unterstützt wird, muss die App die folgenden Funktionen ausführen:
Registriere einen Rückruf, um die Gerätefunktionen zu erhalten. Verwende dazu
WifiManager#registerSoftApCallback
für einen Hotspot mit Tethering oderWifiManager#registerLocalOnlyHotspotSoftApCallback
für einen lokalen Hotspot.Der
SoftApCallback
-Callback bietet die folgenden Methoden:SoftApCallback#onCapabilityChanged
: Bietet Informationen zu den Gerätefunktionen, einschließlich der maximalen Anzahl unterstützter Clients und ob SAE oder ACS unterstützt werden.SoftApCallback#onInfoChanged
: Bietet Informationen zum laufenden Soft-AP (nur gültig, wenn es gestartet wurde), einschließlich Band- und Frequenzinformationen.SoftApCallback#onConnectedClientsChanged
: Liste der verbundenen Clients. Sie können für jeden Client die MAC-Adresse abrufen. Verwende denTetheringEventCallback#onClientsChanged
-Callback, um die IP-Informationen abzurufen.SoftApCallback#onStateChanged
: Gibt Informationen zum Status des Soft-APs an, wenn es aktiviert oder deaktiviert wird.SoftApCallback#onBlockedClientConnecting
: Gibt einen der folgenden Gründe für die Blockierung des Clients an: Auf dem Gerät wurde die maximale Anzahl von Clients erreicht, die es unterstützen kann, oder der Client ist nicht ausdrücklich für die Verbindung autorisiert.
Für einen Hotspot mit Tethering:
- Konfigurieren Sie die Soft-AP-Konfiguration für das Tethering, indem Sie die Methode
WifiManager#setSoftApConfiguration
aufrufen und eineSoftApConfiguration
-Instanz angeben. ErstelleSoftApConfiguration
mit der KlasseSoftApConfiguration.Builder
. - Starten Sie das Tethering, indem Sie die Tethering-Methode unter
TetheringManager#startTethering
aufrufen.
Nur für lokalen Hotspot:
- Starten Sie den lokalen Hotspot mit einer bestimmten Soft-AP-Konfiguration, indem Sie die Methode
WifiManager#startLocalOnlyHotspot
aufrufen.
Zulassungs- und Sperrlisten implementieren
Eine typische Anforderung von Mobilfunkanbietern besteht darin, dass Nutzer die Geräte steuern können, die mit dem Soft-AP verbunden werden dürfen. Dazu gibt es mehrere Mechanismen:
- Begrenzen Sie mit
SoftApConfiguration.Builder#setMaxNumberOfClients
die maximale Anzahl der Geräte, die mit dem Soft-Zugangspunkt verknüpft werden können. Geben Sie eine Zahl an, die kleiner als die vom Gerät unterstützte maximale Anzahl von Clients ist. Die maximale Anzahl erhalten Sie vonSoftApCapability#getMaxSupportedClients
. Dynamische Steuerung mit Zulassungs- und Sperrlisten:
- Bei der Standardkonfiguration eines Soft-AP können sich alle Geräte mit dem Soft-AP verbinden, mit Ausnahme von Geräten, deren MAC-Adressen
SoftApConfiguration.Builder#setBlockedClientList
hinzugefügt wurden. Wenn das Soft-AP mit
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
konfiguriert ist, wird die Zulassungsliste verwendet.- Die Verknüpfung aller Geräte, deren MAC-Adressen in
SoftApConfiguration.Builder#setBlockedClientList
enthalten sind, wird blockiert. - Alle Geräte, deren MAC-Adressen in
SoftApConfiguration.Builder#setAllowedClientList
enthalten sind, können zugeordnet werden. - Alle anderen Geräte (d. h. Geräte, deren MAC-Adressen nicht in der Zulassungs- oder Sperrliste stehen) können nicht zugeordnet werden, aber
SoftApCallback#onBlockedClientConnecting
wird aufgerufen. So kann die steuernde App (d. h. die Einstellungen App) eine Aktion ausführen, z. B. den Nutzer um Bestätigung bitten und das Gerät dann je nach Nutzerverhalten der Zulassungs- oder Sperrliste hinzufügen.
- Die Verknüpfung aller Geräte, deren MAC-Adressen in
Die Funktion „Zulassungsliste“ kann nur auf Geräten verwendet werden, auf denen sie unterstützt wird. Sie können die Geräteunterstützung mit
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
prüfen.- Bei der Standardkonfiguration eines Soft-AP können sich alle Geräte mit dem Soft-AP verbinden, mit Ausnahme von Geräten, deren MAC-Adressen
Implementierung
Um Tethering über einen Hotspot oder einen lokal begrenzten Hotspot zu unterstützen, müssen Gerätehersteller die Einstellungen-App, das Framework und die HAL/Firmware unterstützen:
Einstellungen-App:Die AOSP-Einstellungen-App bietet eine Baseline für die Konfiguration eines Tethering-Hotspots mit SSID und Sicherheitsanmeldedaten. Dieser Code kann unverändert verwendet oder so modifiziert werden, dass zusätzliche Funktionen zur Verfügung stehen, wie im Artikel Apps mit Hotspot-APIs entwickeln beschrieben.
Framework:Der AOSP-Framework-Code unterstützt alle Funktionen, die im Hilfeartikel 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-Version IHostapd.aidl.
Personalisierung
Zur Anpassung der Implementierung 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-Zeitlimit 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 Mobilfunkanbietereinschränkungen (durchCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
angegeben). Das Endergebnis wird der App mitSoftApCapabilities#getMaxSupportedClients
zur Verfügung gestellt.config_wifiSofapClientForceDisconnectSupported
: Gibt an, ob das Gerät die Möglichkeit hat, die Verbindung eines Clients zu trennen. Erforderlich, um Zulassungs- und Sperrlisten zu aktivieren. Wird überSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
an die steuernde App (Einstellungen) gesendet.- (Verfügbar ab Version 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Gibt an, ob die Passphrase des Soft-APs in ASCII codiert werden muss. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: Gibt an, ob die Bandeinstellung während der Wiederherstellung der Cloud-Konfiguration automatisch auf Dualband umgestellt werden soll, wenn ein neues Gerät unterstützt wird.- (Verfügbar ab Version 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: ob das Framework automatisch niedrigere Bänder an die Bandkonfiguration anhängt, um die gemeinsame Nutzung zu vermeiden. config_wifiSoftApDynamicCountryCodeUpdateSupported
: Ob die dynamische Aktualisierung des Landescodes im AP-Modus auf dem Gerät unterstützt wird- Kanalunterstützung:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
undconfig_wifiSoftap60gChannelList
- Unterstützung für die Wiederherstellung aktivieren und angeben, ob die entsprechenden Einträge bei der Wiederherstellung der Hotspot-Konfiguration auf einem neuen Gerät auf die Standardwerte zurückgesetzt werden sollen:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Standardmäßig sind diese 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 13 Jahren)
config_wifiSoftapOweTransitionSupported
- (Verfügbar ab 13 Jahren)
config_wifiSoftapOweSupported
config_wifi_softap_ieee80211ac_supported
config_wifiSoftapIeee80211axSupported
- (Verfügbar ab 13 Jahren)
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.
Unit tests
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/
Compatibility Test Suite (CTS)-Tests
Verwenden Sie CTS-Tests, um die Hotspot-Funktion zu validieren. CTS erkennt, wenn die Funktion aktiviert ist, und schließt 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