Android unterstützt WLAN-Hotspots (Soft-AP), einschließlich Tethering über einen WLAN-Hotspot und lokal beschränkte 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 der zulässigen Clients
- Wert für das Zeitlimit für das automatische 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.
Anwendungen mit Hotspot-APIs entwickeln
Eine Standardimplementierung eines per Tethering angeschlossenen WLAN-Hotspots wird von der App „AOSP Settings“ bereitgestellt. Sie führt jedoch nicht alle APIs für die Soft-AP-Konfiguration aus.
Die Anwendung muss die folgenden Funktionen ausführen, um Tethering über einen Hotspot oder einen nur lokalen Hotspot zu unterstützen:
Registrieren Sie einen Rückruf, um die Gerätefunktionen zu erhalten. Verwenden Sie 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
: stellt eine Liste der verbundenen Clients bereit. Sie können für jeden Client die MAC-Adresse abrufen. Verwende denTetheringEventCallback#onClientsChanged
-Callback, um die IP-Informationen abzurufen.SoftApCallback#onStateChanged
: Bietet Informationen zum Status des Soft-APs, wenn es aktiviert und 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 Tethering-Hotspot:
- 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. Die Anzahl muss niedriger sein als die maximale Anzahl der vom Gerät unterstützten Clients. Die maximale Anzahl erhalten Sie vonSoftApCapability#getMaxSupportedClients
. Dynamische Steuerung mit Zulassungs- und Sperrlisten:
- Die Standardkonfiguration eines Soft-AP ermöglicht es allen Geräten, mit dem Soft-AP eine Verbindung herzustellen, mit Ausnahme von Geräten, deren MAC-Adressen zu
SoftApConfiguration.Builder#setBlockedClientList
hinzugefügt werden. 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
Hinweis: Die Zulassungsliste kann nur verwendet werden, wenn sie auf dem Gerät unterstützt wird. 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, mit dem Soft-AP eine Verbindung herzustellen, mit Ausnahme von Geräten, deren MAC-Adressen zu
Implementierung
Um Tethering über einen Hotspot oder einen nur lokalen Hotspot zu unterstützen, müssen die Gerätehersteller die App „Einstellungen“, das Framework und die HAL/Firmware unterstützen:
Einstellungen:Die AOSP-Einstellungen bieten eine Baseline 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 Anwendungen 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 (App „Einstellungen“) kommuniziert.- (Verfügbar ab 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Gibt an, ob die weiche AP-Passphrase in ASCII codieren kann. 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 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Gibt an, ob das Framework automatisch niedrigere Bänder an die Bandkonfiguration anfügt, um eine Koexistenz 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 angeben, um festzulegen, ob die entsprechenden Einträge bei der Wiederherstellung der Hotspot-Konfiguration auf einem neuen Gerät auf die Standardwerte zurückgesetzt werden:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Diese sind standardmäßig auftrue
gesetzt, 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
- (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 CTS-Tests (Compatibility Test Suite), um das Hotspot-Feature 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/
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