Android obsługuje hotspot Wi-Fi (Soft AP), w tym tethering przez hotspot Wi-Fi i lokalne hotspoty Wi-Fi.
Funkcja soft AP umożliwia konfigurowanie tych elementów:
- Identyfikator SSID i BSSID
- Typ zabezpieczeń (w tym WPA3)
- Ukryty identyfikator SSID
- Pasmo i kanał operacyjny (w tym ACS)
- Maksymalna dozwolona liczba klientów
- Wartość czasu oczekiwania przed automatycznym wyłączeniem
- Lista dozwolonych i lista zablokowanych urządzeń, aby umożliwić użytkownikom kontrolowanie powiązanych urządzeń
- Poziom losowości adresu MAC dla identyfikatora BSSID punktu dostępu
- 802.11ax i 802.11be
Dostępność tych elementów sterujących zależy od możliwości urządzenia. Android 11 wprowadza interfejsy API umożliwiające korzystanie z tych funkcji. Producenci urządzeń mogą też określać podstawowe funkcje urządzenia za pomocą nakładek.
Pamiętaj, że niektóre interfejsy API są interfejsami systemowymi i mają ograniczone uprawnienia, dzięki czemu tylko aplikacja Ustawienia systemu ma do nich dostęp.
Tworzenie aplikacji z interfejsami API hotspotów
Domyślna implementacja hotspota Wi-Fi w ramach aplikacji Ustawienia AOSP nie wykorzystuje wszystkich interfejsów API do konfiguracji Soft AP.
Aby obsługiwać tethering przez hotspot lub hotspot tylko lokalny, aplikacja musi wykonywać te funkcje:
Zarejestruj wywołanie zwrotne, aby uzyskać informacje o możliwościach urządzenia, używając parametru
WifiManager#registerSoftApCallback
w przypadku hotspota z podłączonym urządzeniem lub parametruWifiManager#registerLocalOnlyHotspotSoftApCallback
w przypadku hotspota tylko lokalnego.Wywołanie zwrotne
SoftApCallback
udostępnia te metody:SoftApCallback#onCapabilityChanged
: Pozwala uzyskać informacje o możliwościach urządzenia, w tym o maksimum liczby obsługiwanych klientów oraz o tym, czy obsługiwane są protokoły SAE lub ACS.SoftApCallback#onInfoChanged
: Pokazuje informacje o działającym Soft AP (dostępne tylko po uruchomieniu), w tym informacje o pasmie i częstotliwości.SoftApCallback#onConnectedClientsChanged
: Wyświetla listę połączonych klientów. W przypadku każdego klienta możesz uzyskać adres MAC. Aby uzyskać informacje o adresie IP, użyj funkcjiTetheringEventCallback#onClientsChanged
połączenia zwrotnego.SoftApCallback#onStateChanged
: Pokazuje stan Soft AP w miarę włączania i wyłączania.SoftApCallback#onBlockedClientConnecting
: Pokazuje informacje o zablokowanym kliencie z jednym z tych powodów blokowania: urządzenie osiągnęło maksymalną liczbę obsługiwanych klientów lub klient nie ma wyraźnego zezwolenia na połączenie.SoftApCallback#onClientsDisconnected
: zawiera listę odłączonych klientów. Możesz uzyskać przyczynę odłączenia każdego klienta.
W przypadku hotspota z tetheringiem:
- Skonfiguruj konfigurację soft AP do tetheringu, wywołując metodę
WifiManager#setSoftApConfiguration
i podając instancjęSoftApConfiguration
. UtwórzSoftApConfiguration
za pomocą klasySoftApConfiguration.Builder
. - Rozpocznij tethering, wywołując metodę tetheringu w
TetheringManager#startTethering
.
W przypadku hotspotu tylko lokalnego:
- Uruchom hotspot tylko lokalny z określoną konfiguracją soft AP, wywołując metodę
WifiManager#startLocalOnlyHotspot
.
Wdrożenie list dozwolonych i zablokowanych
Typowe wymagania operatora to zapewnienie użytkownikowi możliwości kontrolowania urządzeń, które mogą być powiązane z Soft AP. Możesz to zrobić na kilka sposobów:
- Ogranicz maksymalną liczbę urządzeń, które mogą się łączyć z miękkim punktem dostępu, za pomocą
SoftApConfiguration.Builder#setMaxNumberOfClients
. Pamiętaj, aby podać liczbę mniejszą od maksymalnej liczby klientów obsługiwanych przez urządzenie. Maksymalną liczbę możesz uzyskać zSoftApCapability#getMaxSupportedClients
. Zapewnij dynamiczną kontrolę za pomocą list dozwolonych i zablokowanych:
- Domyślna konfiguracja soft AP pozwala na tworzenie skojarzeń z soft AP wszystkim urządzeniom z wyjątkiem tych, których adresy MAC zostały dodane do
SoftApConfiguration.Builder#setBlockedClientList
. Jeśli Soft AP jest skonfigurowany za pomocą
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
, używana jest lista dozwolonych.- Wszystkie urządzenia, których adresy MAC znajdują się w
SoftApConfiguration.Builder#setBlockedClientList
, nie mogą być powiązane. - Dozwolone jest kojarzenie wszystkich urządzeń, których adresy MAC znajdują się w pliku
SoftApConfiguration.Builder#setAllowedClientList
. - Wszystkie inne urządzenia (czyli urządzenia, których adresy MAC nie znajdują się na liście dozwolonych lub zablokowanych) nie mogą być powiązane, ale wywoływana jest funkcja
SoftApCallback#onBlockedClientConnecting
, co pozwala aplikacji sterującej (czyli aplikacji Ustawienia) podjąć działanie, na przykład poprosić użytkownika o potwierdzenie, a następnie dodać urządzenie do listy dozwolonych lub zablokowanych w zależności od zachowania użytkownika.
- Wszystkie urządzenia, których adresy MAC znajdują się w
Pamiętaj, że urządzenia mogą korzystać z funkcji listy zezwoleń tylko wtedy, gdy jest ona obsługiwana na urządzeniu. Obsługę urządzenia możesz sprawdzić za pomocą
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- Domyślna konfiguracja soft AP pozwala na tworzenie skojarzeń z soft AP wszystkim urządzeniom z wyjątkiem tych, których adresy MAC zostały dodane do
Implementacja
Aby obsługiwać tethering przez hotspot lub hotspot tylko lokalny, producenci urządzeń muszą zapewnić obsługę aplikacji Ustawienia, frameworku i HAL/firmware:
Aplikacja Ustawienia: aplikacja ustawień AOSP zapewnia podstawę do konfigurowania hotspotu tetheringu za pomocą SSID i danych logowania. Kod ten można wykorzystać w postaci niezmienionej lub zmodyfikować, aby uzyskać dodatkowe funkcje opisane w artykule Tworzenie aplikacji z użyciem interfejsów API hotspotów.
Platforma: kod platformy AOSP obsługuje wszystkie funkcje opisane w artykule Tworzenie aplikacji z użyciem interfejsów API hotspotów.
HAL/firmware dla hotspota: użyj pliku HIDL IHostapd.hal w wersji 1.2 lub nowszej albo pliku AIDL IHostapd.aidl.
Dostosowywanie
Aby dostosować implementację, producenci urządzeń powinni skonfigurować te nakładki i konfiguracje operatora, które są opisane w dokumentacji packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: domyślny interwał czasu oczekiwania na wyłączenie. Dozwolone tylko wtedy, gdy włączona jest opcjaSoftApConfiguration#setAutoShutdownEnabled
. Można go zastąpić za pomocą atrybutuSoftApConfiguration#setShutdownTimeoutMillis
.config_wifiHardwareSoftapMaxClientCount
: ograniczenie sprzętowe dotyczące maksymalnej liczby obsługiwanych klientów. Maksymalna liczba klientów obsługiwanych przez urządzenie to minimalna wartość ograniczeń sprzętowych i operatora (określona przezCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Ostateczny wynik jest przekazywany do aplikacji za pomocąSoftApCapabilities#getMaxSupportedClients
.config_wifiSofapClientForceDisconnectSupported
: czy urządzenie ma możliwość wymuszenia rozłączenia klienta. Wymagana, aby włączyć listy dozwolonych i zablokowanych. Komunikacja z aplikacją sterującą (aplikacją Ustawienia) odbywa się za pomocąSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- (dostępne od wersji 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Czy hasło do soft AP musi być możliwe do zakodowania w ASCII. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: określa, czy podczas przywracania konfiguracji w chmurze w przypadku obsługi nowego urządzenia automatycznie uaktualniać ustawienia pasma na podwójne pasma.- (dostępne od wersji 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Czy framework automatycznie dodaje pasma o niższych częstotliwościach do konfiguracji pasma, aby uniknąć obsługi współistnienia. config_wifiSoftApDynamicCountryCodeUpdateSupported
: czy na urządzeniu obsługiwana jest dynamiczna aktualizacja kodu kraju w trybie AP- Obsługiwane kanały:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
iconfig_wifiSoftap60gChannelList
. - Obsługa przywracania określająca, czy odpowiednie wpisy mają zostać zresetowane do wartości domyślnych podczas przywracania konfiguracji hotspota na nowym urządzeniu:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Pamiętaj, że domyślnie są one ustawione natrue
, co oznacza, że wartości są resetowane. Jest to bardzo ważne, jeśli nowe urządzenie nie obsługuje konfiguracji. - Możliwości sprzętowe:
config_wifi_softap_acs_supported
config_wifi_softap_sae_supported
- (dostępne od 13 stycznia)
config_wifiSoftapOweTransitionSupported
- (dostępne od 13 stycznia)
config_wifiSoftapOweSupported
config_wifi_softap_ieee80211ac_supported
config_wifiSoftapIeee80211axSupported
- (dostępne od 13 stycznia)
config_wifiSoftapIeee80211beSupported
config_wifiSoftapMacAddressCustomizationSupported
config_wifiSoftapHeSuBeamformerSupported
config_wifiSoftapHeSuBeamformeeSupported
config_wifiSoftapHeMuBeamformerSupported
config_wifiSoftapHeTwtSupported
config_wifiSoftap24ghzSupported
config_wifiSoftap5ghzSupported
config_wifiSoftap6ghzSupported
config_wifiSoftap60ghzSupported
config_wifiSoftapAcsIncludeDfs
Weryfikacja
Android udostępnia zestaw testów jednostkowych i testów Compatibility Test Suite (CTS) do sprawdzania funkcji hotspotu. Funkcję hotspotów możesz też przetestować za pomocą pakietu testów dostawcy (VTS).
Testy jednostkowe
Zweryfikuj pakiet hotspota za pomocą tych testów.
Testy usługi:
atest packages/modules/Wifi/service/tests/wifitests/
Testy menedżera:
atest packages/modules/Wifi/framework/tests/
testy Compatibility Test Suite (CTS),
Aby sprawdzić funkcję hotspotu, użyj testów CTS. CTS wykrywa, kiedy funkcja jest włączona, i automatycznie uwzględnia powiązane testy.
Aby uruchomić testy CTS, uruchom:
atest android.net.wifi.cts.WifiManagerTest
Zestaw testów dostawcy (VTS)
Jeśli interfejs HIDL jest zaimplementowany, uruchom:
atest VtsHalWifiHostapdV1_2Target
Jeśli interfejs AIDL jest zaimplementowany, uruchom:
atest VtsHalHostapdTargetTest