Hotspot Wi-Fi (soft AP)

Android zapewnia obsługę hotspotów Wi-Fi (miękkich AP), w tym tetheringu 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 dozwolona liczba 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 w przypadku 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, które pozwalają uzyskać te możliwości. 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 ma do nich dostęp.

Tworzenie aplikacji z interfejsami 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:

  1. 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 parametru WifiManager#registerLocalOnlyHotspotSoftApCallback w przypadku hotspota tylko lokalnego.

    Wywołanie zwrotne SoftApCallback udostępnia te metody:

    • SoftApCallback#onCapabilityChanged: Pozwala uzyskać informacje o możliwościach urządzenia, w tym o maksymalnej liczbie obsługiwanych klientów oraz o tym, czy obsługiwane są protokoły SAE lub ACS.
    • SoftApCallback#onInfoChanged: Dostarcza informacji o uruchomionym interfejsie Soft AP (dostępne tylko po uruchomieniu), w tym informacji o pasmach i częstotliwościach.
    • SoftApCallback#onConnectedClientsChanged: Wyświetla listę połączonych klientów. W przypadku każdego klienta możesz uzyskać adres MAC. Aby uzyskać informacje o adresie IP, użyj funkcji TetheringEventCallback#onClientsChangedpołączenia zwrotnego.
    • SoftApCallback#onStateChanged: Pokazuje stan Soft AP podczas 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:

  1. Skonfiguruj konfigurację soft AP do tetheringu, wywołując metodę WifiManager#setSoftApConfiguration i podając instancję SoftApConfiguration. Utwórz SoftApConfiguration za pomocą klasy SoftApConfiguration.Builder.
  2. Rozpocznij 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.

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 można powiązać z powiązanym punktem dostępu za pomocą funkcji SoftApConfiguration.Builder#setMaxNumberOfClients. Pamiętaj, aby podać liczbę mniejszą od maksymalnej liczby klientów obsługiwanych przez urządzenie. Maksymalną liczbę znajdziesz w SoftApCapability#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.

      • Powiązanie z żadnym urządzeniem, którego adresy MAC jest w regionie SoftApConfiguration.Builder#setBlockedClientList, jest blokowane.
      • Powiązanie może być możliwe na wszystkich urządzeniach, których adresy MAC są w regionie 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 sterują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.

    Pamiętaj, że funkcja listy dozwolonych jest dostępna na urządzeniach tylko wtedy, gdy jest ona obsługiwana na danym 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ą zapewnić obsługę aplikacji Ustawienia, frameworku i HAL/firmware:

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. Tej funkcji można użyć tylko wtedy, gdy włączona jest zasada SoftApConfiguration#setAutoShutdownEnabled. Można ją zastąpić za pomocą funkcji 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 minimalna wartość ograniczeń sprzętowych i operatora (określona przez CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Ostateczny wynik jest przekazywany do aplikacji za pomocą SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: czy urządzenie ma możliwość wymuszenia rozłączenia klienta. Wymagana do włączenia list dozwolonych i blokowanych. Komunikacja z aplikacją sterującą (aplikacją Ustawienia) odbywa się za pomocą interfejsu SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).
  • (dostępne od wersji 13)config_wifiSoftapPassphraseAsciiEncodableCheck: Czy hasło do soft AP musi być kodowalne 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: określa, czy urządzenie obsługuje dynamiczną aktualizację kodu kraju w trybie AP.
  • Kanały pomocy: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList i config_wifiSoftap60gChannelList.
  • Obsługa przywracania określająca, czy odpowiednie wpisy mają zostać zresetowane 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 stycznia) config_wifiSoftapOweTransitionSupported
    • (dostępne od 13 stycznia) 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 Compatibility Test Suite (CTS), aby sprawdzić funkcję 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)

Użyj testów CTS, aby sprawdzić działanie funkcji 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

Vendor Test Suite (VTS)

Jeśli interfejs HIDL jest zaimplementowany, uruchom:

atest VtsHalWifiHostapdV1_2Target

Jeśli interfejs AIDL jest zaimplementowany, uruchom polecenie:

atest VtsHalHostapdTargetTest