Hotspot Wi-Fi (Soft AP)

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:

  1. Zarejestruj wywołanie zwrotne, aby uzyskać możliwości urządzenia za pomocą funkcji WifiManager#registerSoftApCallback w przypadku tetheringu przez hotspot lub WifiManager#registerLocalOnlyHotspotSoftApCallback w przypadku hotspotu tylko lokalnego.

    Wywołanie zwrotne SoftApCallback udostę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 zwrotnego TetheringEventCallback#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:

  1. Skonfiguruj Soft AP na potrzeby tetheringu, wywołując WifiManager#setSoftApConfiguration metodę i podając SoftApConfiguration instancję. Utwórz SoftApConfiguration za pomocą SoftApConfiguration.Builder klasy.
  2. Uruchom tethering, wywołując metodę tetheringu w TetheringManager#startTethering.

W przypadku hotspotu tylko lokalnego:

  1. 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.

    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).

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:

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 funkcja SoftApConfiguration#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 przez CarrierConfigManager.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_wifiSoftap6gChannelList i config_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 na true, 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_supported
    • config_wifi_softap_sae_supported
    • (Dostępne od Androida 13) config_wifiSoftapOweTransitionSupported
    • (Dostępne od Androida 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Dostępne od Androida 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 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.WifiManagerTest

Vendor Test Suite (VTS)

Jeśli zaimplementowany jest interfejs HIDL:

atest VtsHalWifiHostapdV1_2Target

Jeśli zaimplementowany jest interfejs AIDL:

atest VtsHalHostapdTargetTest