Android obsługuje hotspot Wi-Fi (Soft AP), w tym tethering przez hotspot Wi-Fi i hotspoty Wi-Fi tylko lokalne.
Funkcja Soft AP umożliwia skonfigurowanie tych ustawień:
- SSID i BSSID
- Typ zabezpieczeń (w tym WPA3)
- Ukryty identyfikator SSID
- Pasmo i kanał (w tym ACS)
- Maksymalna liczba dozwolonych klientów
- Wartość czasu oczekiwania na automatyczne wyłączenie
- Lista dozwolonych i lista zablokowanych, które umożliwiają użytkownikowi kontrolowanie powiązanych urządzeń
- Poziom randomizacji adresu MAC dla 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 umożliwiają uzyskanie tych możliwości. Producenci urządzeń mogą też określać podstawowe możliwości urządzenia za pomocą nakładek.
Tworzenie aplikacji za pomocą interfejsów API hotspota
Domyślna implementacja tetheringu przez hotspot Wi-Fi jest udostępniana przez aplikację Ustawienia w ramach projektu Android Open Source Project (AOSP), ale nie wykorzystuje ona 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ć możliwości urządzenia za pomocą funkcji
WifiManager#registerSoftApCallbackw przypadku tetheringu przez hotspot lubWifiManager#registerLocalOnlyHotspotSoftApCallbackw przypadku hotspotu tylko lokalnego.Wywołanie zwrotne
SoftApCallbackudostępnia te metody:SoftApCallback#onCapabilityChanged: udostępnia informacje o możliwościach urządzenia, w tym maksymalną liczbę obsługiwanych klientów oraz informacje o tym, czy obsługiwane są SAE i ACS.SoftApCallback#onInfoChanged: udostępnia informacje o działającym Soft AP (są one prawidłowe tylko po uruchomieniu), w tym informacje o paśmie i częstotliwości.SoftApCallback#onConnectedClientsChanged: udostępnia listę połączonych klientów. Dla każdego klienta możesz uzyskać adres MAC. Aby uzyskać informacje o adresie IP, użyj wywołania zwrotnegoTetheringEventCallback#onClientsChanged.SoftApCallback#onStateChanged: udostępnia aktualizacje stanu Soft AP podczas jego włączania i wyłączania.SoftApCallback#onBlockedClientConnecting: udostępnia informacje o zablokowanym kliencie z jednym z tych powodów blokady: urządzenie osiągnęło maksymalną liczbę klientów, których może obsługiwać, lub klient nie jest wyraźnie upoważniony do połączenia.SoftApCallback#onClientsDisconnected: udostępnia listę odłączonych klientów. Dla każdego klienta możesz uzyskać przyczynę odłączenia.
W przypadku tetheringu przez hotspot:
- Skonfiguruj Soft AP na potrzeby tetheringu, wywołując
WifiManager#setSoftApConfigurationmetodę i podającSoftApConfigurationinstancję. UtwórzSoftApConfigurationza pomocąSoftApConfiguration.Builderklasy. - Uruchom 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.
Implementowanie list dozwolonych i zablokowanych
Typowym wymaganiem operatora jest zapewnienie użytkownikowi kontroli nad urządzeniami, które mogą łączyć się z Soft AP. Można to zrobić na kilka sposobów:
- Ogranicz maksymalną liczbę urządzeń, które mogą łączyć się z Soft AP, za pomocą
SoftApConfiguration.Builder#setMaxNumberOfClients. Pamiętaj, aby określić liczbę mniejszą niż maksymalna liczba klientów obsługiwanych przez urządzenie. Maksymalną liczbę możesz uzyskać za pomocąSoftApCapability#getMaxSupportedClients. Zapewnij dynamiczną kontrolę za pomocą list dozwolonych i zablokowanych:
- Domyślna konfiguracja Soft AP umożliwia wszystkim urządzeniom łączenie się z Soft AP, z wyjątkiem urządzeń, 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, są blokowane przed połączeniem. - Wszystkie urządzenia, których adresy MAC znajdują się w
SoftApConfiguration.Builder#setAllowedClientList, mogą się łączyć. - Wszystkie inne urządzenia (czyli urządzenia, których adresy MAC nie znajdują się na liście dozwolonych ani zablokowanych) są blokowane przed połączeniem, ale wywoływana jest funkcja
SoftApCallback#onBlockedClientConnecting, co umożliwia aplikacji sterującej (czyli aplikacji Ustawienia) podjęcie działania, np. poproszenie użytkownika o potwierdzenie, a następnie dodanie urządzenia 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 dozwolonych 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 umożliwia wszystkim urządzeniom łączenie się z Soft AP, z wyjątkiem urządzeń, których adresy MAC zostały dodane do
Implementacja
Aby obsługiwać tethering przez hotspot lub hotspot tylko lokalny, producenci urządzeń muszą udostępnić aplikację Ustawienia, platformę i obsługę HAL/oprogramowania układowego:
Aplikacja Ustawienia: aplikacja Ustawienia w ramach projektu Android Open Source Project (AOSP) stanowi podstawę do konfigurowania tetheringu przez hotspot z identyfikatorem SSID i danymi logowania. Ten kod można używać w niezmienionej postaci lub modyfikować, aby zapewnić dodatkowe możliwości opisane w sekcji Tworzenie aplikacji za pomocą interfejsów API hotspota.
Platforma: kod platformy AOSP obsługuje wszystkie funkcje opisane w sekcji Tworzenie aplikacji za pomocą interfejsów API hotspota.
HAL/oprogramowanie układowe hotspota: HIDL
IHostapd.halw wersji 1.2 lub nowszej albo AIDLIHostapd.aidl.
Dostosowywanie
Aby dostosować implementację, zalecamy producentom urządzeń skonfigurowanie tych
nakładek i konfiguracji operatora, które są opisane w
packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: domyślny interwał czasu oczekiwania na wyłączenie. Jest prawidłowy tylko wtedy, gdy włączona jest funkcjaSoftApConfiguration#setAutoShutdownEnabled. Można go zastąpić za pomocąSoftApConfiguration#setShutdownTimeoutMillis.config_wifiHardwareSoftapMaxClientCount: ograniczenie sprzętowe dotyczące maksymalnej liczby obsługiwanych klientów. Maksymalna liczba klientów obsługiwanych przez urządzenie to minimum ograniczeń sprzętowych i operatora (określonych przezCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Wynik końcowy jest udostępniany aplikacji za pomocąSoftApCapabilities#getMaxSupportedClients.config_wifiSofapClientForceDisconnectSupported: czy urządzenie może wymusić odłączenie klienta. Wymagane do włączenia list dozwolonych i zablokowanych. Przekazywane do aplikacji sterującej (aplikacji Ustawienia) za pomocąSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).- (Dostępne od Androida 13)
config_wifiSoftapPassphraseAsciiEncodableCheck: czy hasło Soft AP musi być kodowane w ASCII. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: czy podczas przywracania konfiguracji w chmurze należy automatycznie uaktualnić konfigurację ustawień pasma do pasm podwójnych, gdy obsługiwane jest nowe urządzenie.- (Dostępne od Androida 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: czy platforma automatycznie dołącza niższe pasma do konfiguracji pasma aby uniknąć obsługi współistnienia. config_wifiSoftApDynamicCountryCodeUpdateSupported: czy na urządzeniu jest obsługiwana dynamiczna aktualizacja kodu kraju w trybie AP.- Obsługa kanałów:
config_wifiSoftap2gChannelList,config_wifiSoftap5gChannelList,config_wifiSoftap6gChannelListiconfig_wifiSoftap60gChannelList. - Obsługa przywracania, która określa, czy odpowiednie wpisy są 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 ważne, jeśli nowe urządzenie nie obsługuje konfiguracji. - Możliwości sprzętowe:
config_wifi_softap_acs_supportedconfig_wifi_softap_sae_supported- (Dostępne od Androida 13)
config_wifiSoftapOweTransitionSupported - (Dostępne od Androida 13)
config_wifiSoftapOweSupported config_wifi_softap_ieee80211ac_supportedconfig_wifiSoftapIeee80211axSupported- (Dostępne od Androida 13)
config_wifiSoftapIeee80211beSupported config_wifiSoftapMacAddressCustomizationSupportedconfig_wifiSoftapHeSuBeamformerSupportedconfig_wifiSoftapHeSuBeamformeeSupportedconfig_wifiSoftapHeMuBeamformerSupportedconfig_wifiSoftapHeTwtSupportedconfig_wifiSoftap24ghzSupportedconfig_wifiSoftap5ghzSupportedconfig_wifiSoftap6ghzSupportedconfig_wifiSoftap60ghzSupportedconfig_wifiSoftapAcsIncludeDfs
Weryfikacja
Android udostępnia zestaw testów jednostkowych i testów Compatibility Test Suite (CTS), które umożliwiają weryfikację funkcji hotspota. Funkcję hotspota można też testować za pomocą Vendor Test Suite (VTS).
Testy jednostkowe
Sprawdź pakiet hotspota za pomocą tych testów.
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ć funkcję hotspota. CTS wykrywa, kiedy funkcja jest włączona, i automatycznie uwzględnia powiązane testy.
Aby uruchomić testy CTS:
atest android.net.wifi.cts.WifiManagerTestVendor Test Suite (VTS)
Jeśli zaimplementowany jest interfejs HIDL:
atest VtsHalWifiHostapdV1_2TargetJeśli zaimplementowany jest interfejs AIDL:
atest VtsHalHostapdTargetTest