Android zapewnia obsługę hotspotów Wi-Fi (miękkich AP), w tym tetheringu przez hotspot Wi-Fi i lokalne hotspoty Wi-Fi.
Funkcja nieobecnego punktu dostępu umożliwia:
- SSID i BSSID,
- Typ zabezpieczeń (w tym WPA3)
- Ukryty identyfikator SSID
- Zakres i kanał operacyjny (w tym ACS)
- Maksymalna liczba dozwolonych klientów
- Wartość limitu czasu automatycznego wyłączania
- listy dozwolonych i zablokowanych, które umożliwiają użytkownikom kontrolę nad powiązanymi urządzeniami;
- Poziom randomizacji adresu MAC dla identyfikatora BSSID AP
- 802.11ax i 802.11be
Dostępność tych ustawień 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 możliwości urządzeń za pomocą nakładek.
Pamiętaj, że niektóre interfejsy API to systemowe interfejsy API i dlatego dostęp do nich ma tylko aplikacja Ustawienia w systemie.
Tworzenie aplikacji przy użyciu interfejsów API hotspotów
Domyślna implementacja hotspota Wi-Fi w powiązaniu jest dostępna w aplikacji Ustawienia AOSP, ale nie wykorzystuje wszystkich interfejsów API konfiguracji miękkiego punktu dostępu.
Aby obsługiwać tethering przez hotspot lub lokalny hotspot, aplikacja musi:
Zarejestruj wywołanie zwrotne w celu uzyskania możliwości urządzenia za pomocą
WifiManager#registerSoftApCallback
w przypadku hotspotu w ramach tetheringu lubWifiManager#registerLocalOnlyHotspotSoftApCallback
w przypadku hotspotu lokalnego.Wywołanie zwrotne
SoftApCallback
udostępnia te metody:SoftApCallback#onCapabilityChanged
: zawiera informacje o możliwościach urządzenia, w tym o maksymalnej liczbie obsługiwanych klientów oraz o obsłudze SAE lub ACS.SoftApCallback#onInfoChanged
: dostarcza informacje o uruchomionym Soft AP (ważne tylko po uruchomieniu), w tym informacje o paśmie i częstotliwości.SoftApCallback#onConnectedClientsChanged
: wyświetla listę połączonych klientów. Dla każdego klienta można uzyskać adres MAC. Aby uzyskać informacje o adresie IP, użyj wywołania zwrotnegoTetheringEventCallback#onClientsChanged
.SoftApCallback#onStateChanged
: podaje informacje o stanie funkcji Soft AP w miarę włączania i wyłączania funkcji.SoftApCallback#onBlockedClientConnecting
: podaje informacje o zablokowanym kliencie z jednym z tych powodów zablokowania: urządzenie osiągnęło maksymalną liczbę klientów, które obsługuje, lub klient nie ma wyraźnej autoryzacji do połączenia.
W przypadku hotspotu powiązanego:
- Skonfiguruj konfigurację miękkiego punktu dostępu pod kątem tetheringu, wywołując metodę
WifiManager#setSoftApConfiguration
i podając instancjęSoftApConfiguration
. UtwórzSoftApConfiguration
za pomocą klasySoftApConfiguration.Builder
. - Aby rozpocząć tethering, wywołaj metodę tetheringu pod adresem
TetheringManager#startTethering
.
W przypadku hotspotu tylko lokalnego:
- Uruchom lokalny hotspot z określoną konfiguracją łagodnego punktu dostępu, wywołując metodę
WifiManager#startLocalOnlyHotspot
.
Wdrażanie list dozwolonych i blokowanych
Typowym wymaganiem dla operatora jest udostępnienie użytkownikowi elementów sterujących urządzeniami, które można powiązać z programem Soft AP. Można to zrobić na kilka sposobów:
- Ogranicz maksymalną liczbę urządzeń, które można powiązać z pozornym punktem dostępu, używając funkcji
SoftApConfiguration.Builder#setMaxNumberOfClients
. Pamiętaj, aby podać wartość mniejszą niż maksymalna liczba klientów obsługiwanych przez urządzenie. Maksymalną liczbę znajdziesz wSoftApCapability#getMaxSupportedClients
. Zapewnij dynamiczną kontrolę przy użyciu list dozwolonych i blokowanych:
- Domyślna konfiguracja programowego punktu dostępu umożliwia powiązanie z nim wszystkich urządzeń z wyjątkiem tych, których adresy MAC zostały dodane do
SoftApConfiguration.Builder#setBlockedClientList
. Jeśli programowy punkt dostępu jest skonfigurowany za pomocą parametru
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
, używana jest lista dozwolonych.- Powiązanie z żadnym urządzeniem, którego adres 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) są blokowane, ale wywoływana jest funkcja
SoftApCallback#onBlockedClientConnecting
, która umożliwia aplikacji kontrolującej (czyli aplikacji Ustawienia) wykonanie działania, np. poproszenie użytkownika o potwierdzenie, a następnie dodanie urządzenia do listy dozwolonych lub do listy zablokowanych w zależności od jego zachowania.
- Powiązanie z żadnym urządzeniem, którego adres 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ć na stronie
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- Domyślna konfiguracja programowego punktu dostępu umożliwia powiązanie z nim wszystkich urządzeń z wyjątkiem tych, których adresy MAC zostały dodane do
Implementacja
Aby umożliwić tethering przez hotspot lub lokalny hotspot, producenci urządzeń muszą zapewnić obsługę aplikacji Ustawienia, platformy i HAL/oprogramowania:
Aplikacja Ustawienia: aplikacja Ustawienia AOSP stanowi punkt odniesienia do konfigurowania hotspotu tetheringu z identyfikatorem SSID i danymi uwierzytelniającymi. Można go użyć w niezmienionej formie lub zmodyfikować, by zapewnić dodatkowe możliwości zgodnie z opisem w artykule Tworzenie aplikacji przy użyciu interfejsów API hotspotów.
Struktura: kod platformy AOSP obsługuje wszystkie funkcje opisane w artykule Tworzenie aplikacji przy użyciu interfejsów API hotspotów.
HAL/oprogramowanie układowe do hotspotu: HIDL IHostapd.hal w wersji 1.2 lub nowszej albo IHostapd.aidl AIDL.
Personalizacja
Aby dostosować implementację, producenci urządzeń powinni skonfigurować te nakładki i konfiguracje operatorów, które są opisane w packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: domyślny odstęp czasu wyłączania. 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 liczba ograniczeń sprzętowych i operatorów komórkowych (określanych przezCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Końcowy wynik jest dostarczany do aplikacji z użyciemSoftApCapabilities#getMaxSupportedClients
.config_wifiSofapClientForceDisconnectSupported
: określa, czy urządzenie ma możliwość wymuszania rozłączenia klienta. Wymagane do włączania list dozwolonych i blokowanych. Zintegrowane z aplikacją do sterowania (w aplikacji Ustawienia) za pomocą funkcjiSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- (Dostępne w przypadku 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: określa, czy hasło programowego punktu dostępu musi być kodowane w standardzie ASCII. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: określa, czy podczas przywracania konfiguracji w chmurze automatycznie uaktualniać konfigurację pasma do dwuzakresowych, gdy obsługiwane będzie nowe urządzenie.- (Dostępne od 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: określa, czy platforma automatycznie dołącza dolne pasma 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
. - Przywróć obsługę określającą, czy odpowiednie wpisy mają być resetowane do wartości domyślnych podczas przywracania konfiguracji hotspotu na nowym urządzeniu:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Pamiętaj, że domyślnie ustawiona jest wartośćtrue
, co oznacza, że są one resetowane. Ma to kluczowe znaczenie, jeśli nowe urządzenie nie obsługuje tej konfiguracji. - Funkcje sprzętowe:
config_wifi_softap_acs_supported
config_wifi_softap_sae_supported
- (dostępny od 13)
config_wifiSoftapOweTransitionSupported
- (dostępny od 13)
config_wifiSoftapOweSupported
config_wifi_softap_ieee80211ac_supported
config_wifiSoftapIeee80211axSupported
- (dostępny od 13)
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 zgodności (CTS), które umożliwiają sprawdzenie działania funkcji hotspotu. Funkcję hotspotu możesz też przetestować za pomocą narzędzia Vendor Test Suite (VTS).
Testy jednostkowe
Sprawdź pakiet hotspotu, 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 aktywować testy CTS, uruchom polecenie:
atest android.net.wifi.cts.WifiManagerTest
Vendor Test Suite (VTS)
Jeśli interfejs HIDL jest zaimplementowany, uruchom polecenie:
atest VtsHalWifiHostapdV1_2Target
Jeśli interfejs AIDL jest zaimplementowany, uruchom polecenie:
atest VtsHalHostapdTargetTest