Hotspot Wi-Fi (Soft AP)

Android obsługuje hotspot Wi-Fi (Soft AP), w tym tethering 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 liczba dozwolonych 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 dla 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 umożliwiające korzystanie z tych funkcji. 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 może uzyskać do nich dostęp.

Tworzenie aplikacji z wykorzystaniem interfejsów 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: Pokazuje informacje o możliwościach urządzenia, w tym maksymalną liczbę obsługiwanych klientów i to, czy obsługiwane są protokoły SAE lub ACS.
    • SoftApCallback#onInfoChanged: Pozwala uzyskać informacje o działającym Soft AP (dostępne tylko po uruchomieniu), w tym informacje o pasmach i częstotliwościach.
    • SoftApCallback#onConnectedClientsChanged: zawiera 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: Zawiera informacje o stanie Soft AP w miarę 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 mogą się łączyć z miękkim punktem dostępu, za pomocą SoftApConfiguration.Builder#setMaxNumberOfClients. Pamiętaj, aby podać liczbę mniejszą od maksymalnej liczby klientów obsługiwanych przez urządzenie. Maksymalną liczbę możesz uzyskać z 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.

      • Wszystkie urządzenia, których adresy MAC znajdują się w SoftApConfiguration.Builder#setBlockedClientList, nie mogą być powiązane.
      • Do powiązania są kwalifikowane wszystkie urządzenia, których adresy MAC znajdują się w pliku 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 kontrolują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 urządzenia mogą korzystać z funkcji listy zezwoleń 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ą 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. Dozwolone tylko wtedy, gdy włączona jest opcja SoftApConfiguration#setAutoShutdownEnabled. Można go zastąpić za pomocą atrybutu 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 aplikacji za pomocą SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: czy urządzenie ma możliwość wymuszenia rozłączenia klienta. Wymagana, aby włączyć listy dozwolonych i zablokowanych. Komunikacja z aplikacją sterującą (aplikacją Ustawienia) odbywa się za pomocą SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).
  • (dostępne od wersji 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Czy hasło do soft AP musi być możliwe do zakodowania 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: czy na urządzeniu obsługiwana jest dynamiczna aktualizacja kodu kraju w trybie AP
  • Obsługiwane kanały: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList i config_wifiSoftap60gChannelList.
  • Obsługa przywracania określająca, czy odpowiednie wpisy mają być 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 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 roku) config_wifiSoftapOweTransitionSupported
    • (dostępne od 13 roku) 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 testów Compatibility Test Suite (CTS) do sprawdzania funkcji 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),

Aby sprawdzić funkcję hotspotu, użyj testów CTS. 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:

atest VtsHalHostapdTargetTest