Android bietet Unterstützung für Wi-Fi-Hotspots (Soft AP), einschließlich Tethering über einen WLAN-Hotspot und ausschließlich lokalen 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. In Android 11 werden APIs eingeführt, um diese Funktionen zu erhalten. Gerätehersteller können auch grundlegende Gerätefunktionen mithilfe von Overlays festlegen.
Beachten Sie, dass einige der APIs System-APIs sind und durch Berechtigungen eingeschränkt sind, sodass nur die Anwendung „Einstellungen“ des Systems darauf zugreifen kann.
Anwendungen mit Hotspot-APIs entwickeln
Eine Standardimplementierung eines per Tethering angeschlossenen WLAN-Hotspots wird von der App AOSP-Einstellungen bereitgestellt. Sie verwendet jedoch nicht alle APIs für die Soft-AP-Konfiguration.
Die Anwendung muss die folgenden Funktionen ausführen, um Tethering über einen Hotspot oder einen nur lokalen Hotspot zu unterstützen:
Registrieren Sie einen Callback, um die Gerätefunktionen zu erhalten. Verwenden Sie dazu
WifiManager#registerSoftApCallback
für einen Tethering-Hotspot oderWifiManager#registerLocalOnlyHotspotSoftApCallback
für einen nur lokalen Hotspot.Der
SoftApCallback
-Callback bietet die folgenden Methoden:SoftApCallback#onCapabilityChanged
: Liefert Informationen zu Gerätefunktionen, einschließlich der maximalen Anzahl von unterstützten Clients und ob SAE oder ACS unterstützt werden.SoftApCallback#onInfoChanged
: Liefert Informationen zum ausgeführten weichen ZP (nur nach dem Start gültig), einschließlich Informationen zum Band und zur Frequenz.SoftApCallback#onConnectedClientsChanged
: stellt eine Liste der verbundenen Clients bereit. Für jeden Client können Sie die MAC-Adresse abrufen. Verwenden Sie den CallbackTetheringEventCallback#onClientsChanged
, um die IP-Informationen abzurufen.SoftApCallback#onStateChanged
: Liefert aktuelle Informationen zum Status des weichen ZPs, sobald er aktiviert und deaktiviert wird.SoftApCallback#onBlockedClientConnecting
: Gibt die Informationen zum blockierten Client mit einem der folgenden Gründe für die Blockierung an: Das Gerät hat die maximale Anzahl von Clients erreicht, die unterstützt werden können, oder der Client ist nicht explizit autorisiert, eine Verbindung herzustellen.
Für einen Tethering-Hotspot:
- Konfigurieren Sie die Soft-AP-Konfiguration für Tethering. Rufen Sie dazu die Methode
WifiManager#setSoftApConfiguration
auf und geben Sie eineSoftApConfiguration
-Instanz an. Erstellen SieSoftApConfiguration
mit der KlasseSoftApConfiguration.Builder
. - Starten Sie das Tethering, indem Sie die Tethering-Methode unter
TetheringManager#startTethering
aufrufen.
Für reinen lokalen Hotspot:
- Starten Sie den nur lokalen Hotspot mit einer bestimmten weichen ZP-Konfiguration. Rufen Sie dazu die Methode
WifiManager#startLocalOnlyHotspot
auf.
Zulassungs- und Sperrlisten implementieren
Eine typische Anforderung des Mobilfunkanbieters besteht darin, dem Nutzer die Kontrolle über die Geräte zu geben, die mit dem Soft-Zugangspunkt verknüpft werden dürfen. Dafür gibt es mehrere Methoden:
- Begrenzen Sie die maximale Anzahl von Geräten, die mit dem Soft-AP verknüpft werden können, mit
SoftApConfiguration.Builder#setMaxNumberOfClients
. Die Anzahl muss niedriger sein als die maximale Anzahl der vom Gerät unterstützten Clients. Die maximale Anzahl erhalten Sie unterSoftApCapability#getMaxSupportedClients
. Dynamische Kontrolle über Zulassungs- und Sperrlisten ermöglichen:
- 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 der Soft-Zugangspunkt mit
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
konfiguriert ist, wird die Zulassungsliste verwendet.- Die Verknüpfung aller Geräte mit der MAC-Adresse
SoftApConfiguration.Builder#setBlockedClientList
wird blockiert. - Die Verknüpfung ist für alle Geräte zulässig, deren MAC-Adressen sich in
SoftApConfiguration.Builder#setAllowedClientList
befinden. - Alle anderen Geräte (d. h. Geräte, deren MAC-Adressen nicht auf der Zulassungs- oder Sperrliste stehen) werden nicht verknüpft, aber
SoftApCallback#onBlockedClientConnecting
wird aufgerufen. Dadurch kann die steuernde App (d. h. die App „Einstellungen“) eine Aktion ausführen, z. B. den Nutzer um Bestätigung bitten und das Gerät dann je nach Verhalten des Nutzers der Zulassungsliste oder Sperrliste hinzufügen.
- Die Verknüpfung aller Geräte mit der MAC-Adresse
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 Gerätehersteller die App „Einstellungen“, das Framework und die HAL/Firmware unterstützen:
App „Einstellungen“: Die App „AOSP Settings“ 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 Anwendungen mit Hotspot-APIs entwickeln beschrieben.
Framework:Der AOSP-Frameworkcode unterstützt alle Funktionen, die unter Apps mit Hotspot-APIs entwickeln beschrieben werden.
HAL/Firmware für Hotspot:Entspricht HIDL IHostapd.hal Version 1.2 oder höher oder AIDL IHostapd.aidl.
Personalisierung
Um die Implementierung anzupassen, sollten Gerätehersteller die folgenden Overlays und Mobilfunkanbieter-Konfigurationen konfigurieren, die in packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
dokumentiert sind:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: Das standardmäßige 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, entspricht der Mindestanzahl der Hardware- und Mobilfunkanbieter-Einschrä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 das Trennen eines Clients erzwingen kann. 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 während der Wiederherstellung der Cloud-Konfiguration die Bandeinstellungskonfiguration automatisch auf Dualband aktualisiert 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 die Koexistenz zu vermeiden. config_wifiSoftApDynamicCountryCodeUpdateSupported
: Gibt an, ob die dynamische Aktualisierung des Ländercodes im AP-Modus auf dem Gerät unterstützt wird- Kanalunterstützung:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
undconfig_wifiSoftap60gChannelList
. - Unterstützung beim Wiederherstellen der Angabe, ob die entsprechenden Einträge auf die Standardeinstellungen zurückgesetzt werden, wenn die Hotspot-Konfiguration auf einem neuen Gerät wiederhergestellt wird:
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 diese Konfiguration nicht unterstützt. - Hardwarefunktionen:
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 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/
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, wann die Funktion aktiviert ist, und schließt die zugehörigen Tests automatisch ein.
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