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 liczba dozwolonych 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 może uzyskać do nich dostęp.
Tworzenie aplikacji z wykorzystaniem interfejsów 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
: Pokazuje informacje o możliwościach urządzenia, w tym maksymalną liczbę obsługiwanych klientów i to, czy obsługiwane są protokoły SAE lub ACS.SoftApCallback#onInfoChanged
: Pozwala uzyskać informacje o działającym Soft AP (dostępne tylko po uruchomieniu), w tym informacje o pasmach i częstotliwościach.SoftApCallback#onConnectedClientsChanged
: zawiera 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
: Zawiera informacje o stanie Soft AP w miarę 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 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. - Do powiązania są kwalifikowane wszystkie urządzenia, 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 kontrolują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 hotspota tetheringu za pomocą SSID i danych logowania. Kod ten można wykorzystać w postaci niezmienionej lub zmodyfikowanej, 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 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. 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 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ą być resetowane 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 roku)
config_wifiSoftapOweTransitionSupported
- (dostępne od 13 roku)
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ż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),
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
Vendor Test Suite (VTS)
Jeśli interfejs HIDL jest zaimplementowany, uruchom:
atest VtsHalWifiHostapdV1_2Target
Jeśli interfejs AIDL jest zaimplementowany, uruchom:
atest VtsHalHostapdTargetTest