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, um Nutzern die Kontrolle über verknüpfte Geräte zu ermöglichen
- 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.
Apps mit Hotspot-APIs entwickeln
Eine Standardimplementierung eines WLAN-Hotspots mit Tethering wird von der AOSP-Einstellungs-App (Android Open Source Project) bereitgestellt. 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#registerSoftApCallbackfür einen Hotspot mit Tethering oder mitWifiManager#registerLocalOnlyHotspotSoftApCallbackfür einen Hotspot nur für lokale Verbindungen abzurufen.Der
SoftApCallback-Callback bietet die folgenden Methoden:SoftApCallback#onCapabilityChanged: Bietet 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 der Verbindung abrufen.
Für einen Hotspot mit Tethering:
- Konfigurieren Sie die Soft-AP-Konfiguration für Tethering, indem Sie die Methode
WifiManager#setSoftApConfigurationaufrufen und eineSoftApConfiguration-Instanz bereitstellen. Erstellen SieSoftApConfigurationmit der KlasseSoftApConfiguration.Builder. - Starten Sie das Tethering, indem Sie die Tethering-Methode unter
TetheringManager#startTetheringaufrufen.
Nur lokaler Hotspot:
- Starten Sie den Hotspot nur für lokale Verbindungen mit einer bestimmten Soft-AP-Konfiguration, indem Sie die Methode
WifiManager#startLocalOnlyHotspotaufrufen.
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#setMaxNumberOfClientsmit 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#setBlockedClientListhinzugefü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#setBlockedClientListenthalten sind, werden von der Zuordnung ausgeschlossen. - Alle Geräte, deren MAC-Adressen in
SoftApConfiguration.Builder#setAllowedClientListenthalten sind, dürfen eine Verbindung herstellen. - 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#onBlockedClientConnectingwird aufgerufen, sodass die Steuerungs-App (d. h. die Einstellungen-App) 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 Tethering über einen Hotspot oder ein reiner lokaler Hotspot unterstützt werden kann, müssen Gerätehersteller eine Einstellungen-App, ein Framework sowie HAL-/Firmware-Unterstützung bereitstellen:
Einstellungen:Die Einstellungen-App des Android Open Source Project (AOSP) bietet 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.hal1.2 oder höher oder die AIDL-VersionIHostapd.aidl.
Personalisierung
Um die Implementierung anzupassen, empfehlen wir Geräteherstellern, die folgenden Overlays und Mobilfunkanbieterkonfigurationen zu 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#setAutoShutdownEnabledaktiviert 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#getMaxSupportedClientsbereitgestellt.config_wifiSofapClientForceDisconnectSupported: Gibt an, ob das Gerät einen Client trennen 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 die dynamische Aktualisierung des Ländercodes im AP-Modus auf dem Gerät unterstützt wird.- Unterstützte Channels:
config_wifiSoftap2gChannelList,config_wifiSoftap5gChannelList,config_wifiSoftap6gChannelListundconfig_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 auftruefestgelegt, 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_supportedconfig_wifi_softap_sae_supported- (Verfügbar ab Version 13)
config_wifiSoftapOweTransitionSupported - (Verfügbar ab Version 13)
config_wifiSoftapOweSupported config_wifi_softap_ieee80211ac_supportedconfig_wifiSoftapIeee80211axSupported- (Verfügbar ab Version 13)
config_wifiSoftapIeee80211beSupported config_wifiSoftapMacAddressCustomizationSupportedconfig_wifiSoftapHeSuBeamformerSupportedconfig_wifiSoftapHeSuBeamformeeSupportedconfig_wifiSoftapHeMuBeamformerSupportedconfig_wifiSoftapHeTwtSupportedconfig_wifiSoftap24ghzSupportedconfig_wifiSoftap5ghzSupportedconfig_wifiSoftap6ghzSupportedconfig_wifiSoftap60ghzSupportedconfig_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 mit ein.
Führen Sie Folgendes aus, um die CTS-Tests auszulösen:
atest android.net.wifi.cts.WifiManagerTestVendor Test Suite (VTS)
Wenn die HIDL-Schnittstelle implementiert ist, führen Sie Folgendes aus:
atest VtsHalWifiHostapdV1_2TargetWenn die AIDL-Schnittstelle implementiert ist, führen Sie Folgendes aus:
atest VtsHalHostapdTargetTest