Android zapewnia obsługę hotspotu Wi-Fi (soft 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 umożliwiające uzyskanie tych funkcje zabezpieczeń. Producenci urządzeń mogą też określać podstawowe możliwości urządzenia. za pomocą nakładek.
Pamiętaj, że niektóre z tych interfejsów API to systemowe interfejsy API, dla których dostęp więc dostęp do nich będzie miała tylko systemowa aplikacja Ustawienia.
Tworzenie aplikacji przy użyciu interfejsów API hotspotów
Domyślną implementacją hotspotu Wi-Fi z włączonym tetheringiem jest AOSP Ustawienia aplikacji, ale nie wykorzystuje wszystkich interfejsów API funkcji Soft AP. konfiguracji.
Aby obsługiwać tethering przez hotspot lub lokalny hotspot: aplikacja musi wykonywać te funkcje:
Zarejestruj wywołanie zwrotne, aby uzyskać możliwości urządzenia za pomocą
WifiManager#registerSoftApCallback
, jeśli chcesz korzystać z hotspotu tetheringu lubWifiManager#registerLocalOnlyHotspotSoftApCallback
tylko lokalnie hotspot.Wywołanie zwrotne
SoftApCallback
udostępnia te metody:SoftApCallback#onCapabilityChanged
: Podaje informacje o możliwościach urządzenia, w tym o maksymalnej liczbę obsługiwanych klientów oraz informacje o obsłudze SAE lub ACS.SoftApCallback#onInfoChanged
: Udostępnia informacje o uruchomionym Soft AP (ważne tylko raz) ), w tym informacje o paśmie i częstotliwości.SoftApCallback#onConnectedClientsChanged
: Udostępnia listę połączonych klientów. Dla każdego klienta można uzyskać adres MAC. Aby uzyskać informacje o adresie IP, użyj funkcjiTetheringEventCallback#onClientsChanged
oddzwonienie.SoftApCallback#onStateChanged
: Udostępnia aktualne informacje o stanie funkcji soft AP w miarę jego włączenia oraz wyłączono.SoftApCallback#onBlockedClientConnecting
: Zawiera informacje o zablokowanym kliencie na jeden z tych typów: przyczyny zablokowania: urządzenie osiągnęło maksymalną liczbę klientów, które może obsługiwać, lub klient nie ma wyraźnego upoważnienia do połączyć.
W przypadku hotspotu powiązanego:
- Skonfiguruj konfigurację opcjonalnego punktu dostępu pod kątem tetheringu, wywołując metodę
WifiManager#setSoftApConfiguration
i udostępnianie instancjiSoftApConfiguration
. BudowanieSoftApConfiguration
za pomocąSoftApConfiguration.Builder
. zajęcia. - Rozpocznij tethering, dzwoniąc pod numer
TetheringManager#startTethering
W przypadku hotspotu tylko lokalnego:
- Uruchom lokalny hotspot z określoną konfiguracją pozornego punktu dostępu przez
Wywołując funkcję
WifiManager#startLocalOnlyHotspot
.
Wdrażanie list dozwolonych i blokowanych
Typowym wymogiem przez operatora jest udostępnienie użytkownikowi opcji które można powiązać z programem Soft AP. Dostępnych jest kilka jak to działa:
- Ogranicz maksymalną liczbę urządzeń, które można powiązać z programowym punktem dostępu
za pomocą funkcji
SoftApConfiguration.Builder#setMaxNumberOfClients
. Upewnij się, że: podaj liczbę, która jest mniejsza niż maksymalna liczba obsługiwanych klientów przez urządzenie. Maksymalna liczba numerów, które można uzyskać zSoftApCapability#getMaxSupportedClients
Zapewnij dynamiczną kontrolę przy użyciu list dozwolonych i blokowanych:
- Domyślna konfiguracja Soft AP pozwala wszystkim urządzeniom
z nowym punktem dostępu, z wyjątkiem urządzeń, których adresy MAC są
dodano do playlisty
SoftApConfiguration.Builder#setBlockedClientList
. Jeśli programowy punkt dostępu jest skonfigurowany z
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
, jest używana lista dozwolonych.- Wszystkie urządzenia, których adresy MAC są podane
SoftApConfiguration.Builder#setBlockedClientList
ma zablokowaną możliwość z osobna. - Wszystkie urządzenia, których adresy MAC są podane
SoftApConfiguration.Builder#setAllowedClientList
są dozwolone z osobna. - wszystkie inne urządzenia (tzn. urządzenia z adresami MAC).
nie znajdują się na liście dozwolonych lub zablokowanych) są blokowane w
ale
SoftApCallback#onBlockedClientConnecting
jest i umożliwi aplikacji sterującej (czyli Ustawienia) wykonać działanie, np. poprosić użytkownika o potwierdzenie, a następnie dodanie urządzenia do listy dozwolonych lub blokowanych. w zależności od zachowania użytkownika.
- Wszystkie urządzenia, których adresy MAC są podane
Pamiętaj, że urządzenia mogą korzystać z funkcji listy dozwolonych tylko wtedy, gdy jest obsługiwane przez urządzenie. Obsługę urządzenia możesz sprawdzić za pomocą
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
- Domyślna konfiguracja Soft AP pozwala wszystkim urządzeniom
z nowym punktem dostępu, z wyjątkiem urządzeń, których adresy MAC są
dodano do playlisty
Implementacja
Aby obsługiwać tethering przez hotspot lub tylko lokalny hotspot: producenci urządzeń muszą udostępnić aplikację Ustawienia, platformę, i obsługa HAL/oprogramowania:
Aplikacja Ustawienia: aplikacja Ustawienia AOSP stanowi punkt odniesienia przy konfigurowaniu hotspot tetheringu z identyfikatorem SSID i danymi uwierzytelniającymi. Ten kod można używane lub zmodyfikowane w celu udostępnienia dodatkowych możliwości zgodnie z opisem w artykule Tworzenie aplikacji korzystających z 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 wersji 1.2 lub nowszej albo AIDL IHostapd.aidl.
Dostosowywanie
Aby dostosować implementację, producenci urządzeń powinni skonfigurować
następujące nakładki i konfiguracje operatorów, które są opisane w
packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: wartość domyślna interwału oczekiwania po wyłączeniu. Prawidłowy tylko wtedy, gdy FunkcjaSoftApConfiguration#setAutoShutdownEnabled
jest włączona. Można zastąpić za pomocą funkcjiSoftApConfiguration#setShutdownTimeoutMillis
.config_wifiHardwareSoftapMaxClientCount
: ograniczenie sprzętowe dla z maksymalną liczbą obsługiwanych klientów. Maksymalna liczba klientów które urządzenie obsługuje, to minimalna ilość sprzętu i łącza u operatora. ograniczenia (określone przezCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Ostateczny efekt jest udostępniana aplikacji z celemSoftApCapabilities#getMaxSupportedClients
.config_wifiSofapClientForceDisconnectSupported
: wskazuje, czy urządzenie ma możliwość wymuszania rozłączenia klienta. Wymagane do włączenia zezwolenia i blokować listy. Po skontaktowaniu się z aplikacją do sterowania (aplikacja Ustawienia) za pomocą:SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
- (dostępny od 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Określa, czy hasło programowego punktu dostępu jest wymagane do kodowania ASCII. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: czy nie aby automatycznie zmienić konfigurację pasma na dwa zakresy i przywracanie konfiguracji w chmurze, gdy nowe urządzenie jest obsługiwane.- (dostępny od 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Określa, czy platforma automatycznie dołącza dolne pasma do konfiguracji pasma na unikanie współistnienia. config_wifiSoftApDynamicCountryCodeUpdateSupported
: dynamiczny lub niedynamiczny. aktualizacja kodu kraju w trybie AP jest obsługiwana na urządzeniu.- Zespół pomocy dla kanałów:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
iconfig_wifiSoftap60gChannelList
- Przywróć obsługę określającą, czy odpowiednie wpisy są resetowane
do wartości domyślnej przy przywracaniu konfiguracji hotspotu na nowym urządzeniu:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Zwróć uwagę, że te wartości są ustawione natrue
, co oznacza, że wartości są resetowane. Jest to kluczowe, 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 zapewnia zestaw testów jednostkowych i testów zgodności z pakietem CTS (Compatibility Test Suite). aby sprawdzić działanie funkcji hotspotu. Funkcję hotspotu można też przetestować za pomocą 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 dołącza 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