Android zapewnia obsługę hotspotu Wi-Fi (soft AP), w tym tetheringu przez hotspot Wi-Fi i lokalne hotspoty Wi-Fi.
Funkcja miękkiego AP pozwala na konfigurację następujących elementów:
- SSID i BSSID
- Typ zabezpieczeń (w tym WPA3)
- Ukryty identyfikator SSID
- Pasmo i kanał operacyjny (w tym ACS)
- Maksymalna liczba dozwolonych klientów
- Wartość limitu czasu automatycznego wyłączania
- Listy dozwolonych i blokowanych umożliwiające użytkownikowi kontrolę nad powiązanymi urządzeniami
- Poziom randomizacji MAC dla BSSID AP
- 802.11ax i 802.11be
Możliwości urządzenia określają dostępność tych elementów sterujących. W systemie Android 11 wprowadzono interfejsy API umożliwiające uzyskanie tych możliwości. Producenci urządzeń mogą również określić możliwości urządzenia podstawowego za pomocą nakładek.
Należy pamiętać, że niektóre interfejsy API są systemowymi interfejsami API i są ograniczone uprawnieniami, tak że dostęp do nich może uzyskać tylko systemowa aplikacja Ustawienia.
Tworzenie aplikacji za pomocą interfejsów API hotspotów
Domyślna implementacja hotspotu Wi-Fi na uwięzi jest zapewniana przez aplikację Ustawienia AOSP, jednak nie wykorzystuje ona wszystkich interfejsów API do konfiguracji Soft AP.
Aby obsługiwać tethering przez hotspot lub hotspot lokalny, aplikacja musi spełniać następujące funkcje:
Zarejestruj wywołanie zwrotne, aby uzyskać możliwości urządzenia, używając
WifiManager#registerSoftApCallback
dla hotspotu na uwięzi lubWifiManager#registerLocalOnlyHotspotSoftApCallback
dla hotspotu tylko lokalnego.Wywołanie zwrotne
SoftApCallback
udostępnia następujące metody:-
SoftApCallback#onCapabilityChanged
: zawiera informacje o możliwościach urządzenia, w tym o maksymalnej liczbie obsługiwanych klientów oraz o tym, czy obsługiwane są SAE lub ACS. -
SoftApCallback#onInfoChanged
: Zawiera informacje o działającym programie Soft AP (ważne tylko po uruchomieniu), w tym informacje o paśmie i częstotliwości. -
SoftApCallback#onConnectedClientsChanged
: Zawiera listę podłą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
: Zapewnia aktualizacje stanu miękkiego punktu dostępowego w miarę jego włączania i wyłączania. -
SoftApCallback#onBlockedClientConnecting
: udostępnia informacje o zablokowanym kliencie z jedną z następujących przyczyn blokady: urządzenie osiągnęło maksymalną liczbę klientów, których może obsłużyć lub klient nie ma jawnej autoryzacji do połączenia.
-
W przypadku hotspotu na uwięzi:
- Skonfiguruj konfigurację programowego punktu dostępowego na potrzeby tetheringu, wywołując metodę
WifiManager#setSoftApConfiguration
i udostępniając instancjęSoftApConfiguration
. SkonstruujSoftApConfiguration
przy użyciu klasySoftApConfiguration.Builder
. - Rozpocznij tethering, wywołując metodę tetheringu pod
TetheringManager#startTethering
.
W przypadku hotspotu lokalnego:
- Uruchom lokalny hotspot z określoną konfiguracją programowego punktu dostępowego, wywołując metodę
WifiManager#startLocalOnlyHotspot
.
Implementowanie list dozwolonych i blokowanych
Typowym wymaganiem operatora jest zapewnienie użytkownikowi kontroli nad urządzeniami, które mogą łączyć się z miękkim punktem dostępowym. Można to zrobić na kilka mechanizmów:
- Ogranicz maksymalną liczbę urządzeń, które można skojarzyć z miękkim punktem dostępowym za pomocą
SoftApConfiguration.Builder#setMaxNumberOfClients
. Pamiętaj, aby podać liczbę mniejszą niż maksymalna liczba klientów obsługiwanych przez urządzenie. Maksymalną liczbę można uzyskać zSoftApCapability#getMaxSupportedClients
. Zapewnij dynamiczną kontrolę za pomocą list dozwolonych i blokowanych:
- Domyślna konfiguracja miękkiego punktu dostępowego pozwala wszystkim urządzeniom na skojarzenie z miękkim punktem dostępowym z wyjątkiem urządzeń, których adresy MAC są dodane do
SoftApConfiguration.Builder#setBlockedClientList
. Jeśli programowy punkt dostępowy jest skonfigurowany z
SoftApConfiguration.Builder#setClientControlByUserEnabled( true )
, używana jest lista dozwolonych.- Wszystkie urządzenia, których adresy MAC znajdują się w
SoftApConfiguration.Builder#setBlockedClientList
są zablokowane. - Wszystkie urządzenia, których adresy MAC znajdują się w
SoftApConfiguration.Builder#setAllowedClientList
mogą być skojarzone. - Wszystkie inne urządzenia (tzn. urządzenia, których adresów MAC nie ma na liście dozwolonych lub blokowanych) są blokowane przed skojarzeniem, ale wywoływana jest funkcja
SoftApCallback#onBlockedClientConnecting
, która umożliwia aplikacji sterującej (czyli aplikacji Ustawienia) podjęcie działania, np. na przykład pytanie użytkownika o potwierdzenie, a następnie dodanie urządzenia do listy dozwolonych lub do listy 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 dozwolonych tylko wtedy, gdy jest ona obsługiwana przez urządzenie. Możesz sprawdzić obsługę urządzenia za pomocą
SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
.- Domyślna konfiguracja miękkiego punktu dostępowego pozwala wszystkim urządzeniom na skojarzenie z miękkim punktem dostępowym z wyjątkiem urządzeń, których adresy MAC są dodane do
Realizacja
Aby obsługiwać tethering przez hotspot lub hotspot dostępny tylko lokalnie, producenci urządzeń muszą zapewnić aplikację Ustawienia, platformę i obsługę HAL/oprogramowania sprzętowego:
Aplikacja Ustawienia: Aplikacja Ustawienia AOSP stanowi podstawę do konfiguracji hotspotu tetheringu z identyfikatorem SSID i poświadczeniami zabezpieczeń. Tego kodu można używać w niezmienionej postaci lub modyfikować w celu zapewnienia dodatkowych możliwości zgodnie z opisem w temacie Tworzenie aplikacji za pomocą interfejsów API hotspotów .
Struktura: kod platformy AOSP obsługuje wszystkie funkcje opisane w sekcji Tworzenie aplikacji za pomocą interfejsów API punktów aktywnych .
HAL/oprogramowanie sprzętowe dla hotspotu: albo HIDL IHostapd.hal w wersji 1.2 lub nowszej, albo AIDL IHostapd.aidl .
Dostosowywanie
Aby dostosować implementację, producenci urządzeń powinni skonfigurować następujące konfiguracje nakładek i nośników, które są udokumentowane w packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
-
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: Domyślny limit czasu zamknięcia. Działa tylko wtedy, gdy włączona jestSoftApConfiguration#setAutoShutdownEnabled
. Można zastąpić za pomocąSoftApConfiguration#setShutdownTimeoutMillis
. -
config_wifiHardwareSoftapMaxClientCount
: Ograniczenie sprzętowe dla maksymalnej liczby obsługiwanych klientów. Maksymalna liczba klientów obsługiwanych przez urządzenie to minimum ograniczeń sprzętowych i nośnych (określonych przezCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Ostateczny wynik jest dostarczany do aplikacji za pomocąSoftApCapabilities#getMaxSupportedClients
. -
config_wifiSofapClientForceDisconnectSupported
: czy urządzenie ma możliwość wymuszenia rozłączenia klienta. Wymagane do włączenia list dozwolonych i blokowanych. Komunikowany z aplikacją kontrolującą (aplikacją Ustawienia) za pośrednictwemSoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
. - (Dostępne od wersji 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Określa, czy miękkie hasło AP musi być kodowane w formacie ASCII. -
config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: Określa, czy automatycznie aktualizować konfigurację ustawień pasma do dwóch pasm podczas przywracania konfiguracji w chmurze, gdy obsługiwane jest nowe urządzenie. - (Dostępne od wersji 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Określa, czy struktura automatycznie dołącza dolne pasma do konfiguracji pasma, aby uniknąć obsługi współistnienia. -
config_wifiSoftApDynamicCountryCodeUpdateSupported
: czy urządzenie obsługuje dynamiczną aktualizację kodu kraju w trybie AP - Obsługa kanałów:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
iconfig_wifiSoftap60gChannelList
. - Obsługa przywracania określająca, czy odpowiednie wpisy zostaną zresetowane do ustawień domyślnych podczas przywracania konfiguracji hotspotu na nowym urządzeniu:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Należy pamiętać, że domyślnie mają one wartośćtrue
, co oznacza, że wartości są resetowane. Ma to kluczowe znaczenie, jeśli nowe urządzenie nie obsługuje tej konfiguracji. - Możliwości sprzętowe:
-
config_wifi_softap_acs_supported
-
config_wifi_softap_sae_supported
- (Dostępne od 13)
config_wifiSoftapOweTransitionSupported
- (Dostępne od 13)
config_wifiSoftapOweSupported
-
config_wifi_softap_ieee80211ac_supported
-
config_wifiSoftapIeee80211axSupported
- (Dostępne od 13)
config_wifiSoftapIeee80211beSupported
-
config_wifiSoftapMacAddressCustomizationSupported
-
config_wifiSoftapHeSuBeamformerSupported
-
config_wifiSoftapHeSuBeamformeeSupported
-
config_wifiSoftapHeMuBeamformerSupported
-
config_wifiSoftapHeTwtSupported
-
config_wifiSoftap24ghzSupported
-
config_wifiSoftap5ghzSupported
-
config_wifiSoftap6ghzSupported
-
config_wifiSoftap60ghzSupported
-
config_wifiSoftapAcsIncludeDfs
-
Walidacja
Android udostępnia zestaw testów jednostkowych, testów integracyjnych (Android Connectivity Test Suite, ACTS) i testów zgodności (CTS) w celu sprawdzenia poprawności funkcji hotspotu. Funkcję hotspotu można także przetestować za pomocą pakietu Vendor Test Suite (VTS).
Testy jednostkowe
Sprawdź pakiet hotspotu, korzystając z poniższych testów.
Testy serwisowe:
atest packages/modules/Wifi/service/tests/wifitests/
Testy menedżerskie:
atest packages/modules/Wifi/framework/tests/
Testy integracyjne (ACTS)
Zestaw testów hotspotów ACTS , znajdujący się w tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py
, implementuje testy funkcjonalne funkcji hotspot.
Testy zestawu testów zgodności (CTS).
Użyj testów CTS , aby sprawdzić funkcję 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
Zestaw testów dostawców (VTS)
Jeśli zaimplementowano interfejs HIDL, uruchom:
atest VtsHalWifiHostapdV1_2Target
Jeśli zaimplementowano interfejs AIDL, uruchom:
atest VtsHalHostapdTargetTest