Android zapewnia obsługę hotspotów Wi-Fi (miękkich AP), w tym tetheringu 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 w przypadku 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, które pozwalają uzyskać te możliwości. 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 maksymalnej liczbie obsługiwanych klientów oraz o tym, czy obsługiwane są protokoły SAE lub ACS.SoftApCallback#onInfoChanged
: Dostarcza informacji o uruchomionym interfejsie Soft AP (dostępne tylko po uruchomieniu), w tym informacji o pasmach i częstotliwościach.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 podczas włączania i wyłączania.SoftApCallback#onBlockedClientConnecting
: Pokazuje informacje o zablokowanym kliencie z jednym z tych powodów: urządzenie osiągnęło maksymalną liczbę obsługiwanych klientów lub klient nie ma wyraźnego zezwolenia na połączenie.
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 można powiązać z powiązanym punktem dostępu za pomocą funkcji
SoftApConfiguration.Builder#setMaxNumberOfClients
. Pamiętaj, aby podać liczbę mniejszą od maksymalnej liczby klientów obsługiwanych przez urządzenie. Maksymalną liczbę znajdziesz wSoftApCapability#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.- Powiązanie z żadnym urządzeniem, którego adresy MAC jest w regionie
SoftApConfiguration.Builder#setBlockedClientList
, jest blokowane. - Powiązanie może być możliwe na wszystkich urządzeniach, których adresy MAC są w regionie
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.
- Powiązanie z żadnym urządzeniem, którego adresy MAC jest w regionie
Pamiętaj, że funkcja listy dozwolonych jest dostępna na urządzeniach tylko wtedy, gdy jest ona obsługiwana na danym 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, jak opisano w artykule Tworzenie aplikacji za pomocą 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/oprogramowanie układowe do hotspotu: HIDL IHostapd.hal w wersji 1.2 lub nowszej albo IHostapd.aidl AIDL.
Dostosowywanie
Aby dostosować implementację, producenci urządzeń powinni skonfigurować te nakładki i ustawienia 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. Tej funkcji można użyć tylko wtedy, gdy włączona jest zasadaSoftApConfiguration#setAutoShutdownEnabled
. Można ją zastąpić za pomocą funkcjiSoftApConfiguration#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 do włączenia list dozwolonych i blokowanych. Komunikacja z aplikacją sterującą (aplikacją Ustawienia) odbywa się za pomocą interfejsuSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- (dostępne od wersji 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Czy hasło do soft AP musi być kodowalne 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
: określa, czy urządzenie obsługuje dynamiczną aktualizację kodu kraju w trybie AP.- Kanały pomocy:
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 Compatibility Test Suite (CTS), aby sprawdzić funkcję hotspotu. Funkcję hotspotów można też przetestować za pomocą pakietu testów dostawcy (VTS).
Testy jednostkowe
Sprawdź pakiet hotspota, wykonując te testy.
Testy usługi:
atest packages/modules/Wifi/service/tests/wifitests/
Testy menedżera:
atest packages/modules/Wifi/framework/tests/
Testy Compatibility Test Suite (CTS)
Użyj testów CTS, aby sprawdzić działanie funkcji hotspotu. 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
Vendor Test Suite (VTS)
Jeśli interfejs HIDL jest zaimplementowany, uruchom:
atest VtsHalWifiHostapdV1_2Target
Jeśli interfejs AIDL jest zaimplementowany, uruchom polecenie:
atest VtsHalHostapdTargetTest