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 nieobecnego punktu dostępu umożliwia:

  • SSID i BSSID,
  • Typ zabezpieczeń (w tym WPA3)
  • Ukryty identyfikator SSID
  • Zakres i kanał operacyjny (w tym ACS)
  • Maksymalna liczba dozwolonych klientów
  • Wartość limitu czasu automatycznego wyłączania
  • listy dozwolonych i zablokowanych, które umożliwiają użytkownikom kontrolę nad powiązanymi urządzeniami;
  • Poziom randomizacji adresu MAC dla identyfikatora BSSID AP
  • 802.11ax i 802.11be

Dostępność tych ustawień 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 możliwości urządzeń za pomocą nakładek.

Pamiętaj, że niektóre interfejsy API to systemowe interfejsy API i dlatego dostęp do nich ma tylko aplikacja Ustawienia w systemie.

Tworzenie aplikacji przy użyciu interfejsów API hotspotów

Domyślna implementacja hotspota Wi-Fi w powiązaniu jest dostępna w aplikacji Ustawienia AOSP, ale nie wykorzystuje wszystkich interfejsów API konfiguracji miękkiego punktu dostępu.

Aby obsługiwać tethering przez hotspot lub lokalny hotspot, aplikacja musi:

  1. Zarejestruj wywołanie zwrotne w celu uzyskania możliwości urządzenia za pomocą WifiManager#registerSoftApCallback w przypadku hotspotu w ramach tetheringu lub WifiManager#registerLocalOnlyHotspotSoftApCallback w przypadku hotspotu lokalnego.

    Wywołanie zwrotne SoftApCallback udostępnia te metody:

    • SoftApCallback#onCapabilityChanged: zawiera informacje o możliwościach urządzenia, w tym o maksymalnej liczbie obsługiwanych klientów oraz o obsłudze SAE lub ACS.
    • SoftApCallback#onInfoChanged: dostarcza informacje o uruchomionym Soft AP (ważne tylko po uruchomieniu), w tym informacje o paśmie i częstotliwości.
    • SoftApCallback#onConnectedClientsChanged: wyświetla listę połączonych klientów. Dla każdego klienta można uzyskać adres MAC. Aby uzyskać informacje o adresie IP, użyj wywołania zwrotnego TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged: podaje informacje o stanie funkcji Soft AP w miarę włączania i wyłączania funkcji.
    • SoftApCallback#onBlockedClientConnecting: podaje informacje o zablokowanym kliencie z jednym z tych powodów zablokowania: urządzenie osiągnęło maksymalną liczbę klientów, które obsługuje, lub klient nie ma wyraźnej autoryzacji do połączenia.

W przypadku hotspotu powiązanego:

  1. Skonfiguruj konfigurację miękkiego punktu dostępu pod kątem tetheringu, wywołując metodę WifiManager#setSoftApConfiguration i podając instancję SoftApConfiguration. Utwórz SoftApConfiguration za pomocą klasy SoftApConfiguration.Builder.
  2. Aby rozpocząć tethering, wywołaj metodę tetheringu pod adresem TetheringManager#startTethering.

W przypadku hotspotu tylko lokalnego:

  1. Uruchom lokalny hotspot z określoną konfiguracją łagodnego punktu dostępu, wywołując metodę WifiManager#startLocalOnlyHotspot.

Wdrażanie list dozwolonych i blokowanych

Typowym wymaganiem dla operatora jest udostępnienie użytkownikowi elementów sterujących urządzeniami, które można powiązać z programem Soft AP. Można to zrobić na kilka sposobów:

  • Ogranicz maksymalną liczbę urządzeń, które można powiązać z pozornym punktem dostępu, używając funkcji SoftApConfiguration.Builder#setMaxNumberOfClients. Pamiętaj, aby podać wartość mniejszą niż maksymalna liczba klientów obsługiwanych przez urządzenie. Maksymalną liczbę znajdziesz w SoftApCapability#getMaxSupportedClients.
  • Zapewnij dynamiczną kontrolę przy użyciu list dozwolonych i blokowanych:

    • Domyślna konfiguracja programowego punktu dostępu umożliwia powiązanie z nim wszystkich urządzeń z wyjątkiem tych, których adresy MAC zostały dodane do SoftApConfiguration.Builder#setBlockedClientList.
    • Jeśli programowy punkt dostępu jest skonfigurowany za pomocą parametru SoftApConfiguration.Builder#setClientControlByUserEnabled(true), używana jest lista dozwolonych.

      • Powiązanie z żadnym urządzeniem, którego adres 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) są blokowane, ale wywoływana jest funkcja SoftApCallback#onBlockedClientConnecting, która umożliwia aplikacji kontrolującej (czyli aplikacji Ustawienia) wykonanie działania, np. poproszenie użytkownika o potwierdzenie, a następnie dodanie urządzenia do listy dozwolonych lub do listy zablokowanych w zależności od jego zachowania.

    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ć na stronie SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).

Implementacja

Aby umożliwić tethering przez hotspot lub lokalny hotspot, producenci urządzeń muszą zapewnić obsługę aplikacji Ustawienia, platformy i HAL/oprogramowania:

Personalizacja

Aby dostosować implementację, producenci urządzeń powinni skonfigurować te nakładki i konfiguracje operatorów, które są opisane w packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: domyślny odstęp czasu wyłączania. 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 liczba ograniczeń sprzętowych i operatorów komórkowych (określanych przez CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Końcowy wynik jest dostarczany do aplikacji z użyciem SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: określa, czy urządzenie ma możliwość wymuszania rozłączenia klienta. Wymagane do włączania list dozwolonych i blokowanych. Zintegrowane z aplikacją do sterowania (w aplikacji Ustawienia) za pomocą funkcji SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).
  • (Dostępne w przypadku 13) config_wifiSoftapPassphraseAsciiEncodableCheck: określa, czy hasło programowego punktu dostępu musi być kodowane w standardzie ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: określa, czy podczas przywracania konfiguracji w chmurze automatycznie uaktualniać konfigurację pasma do dwuzakresowych, gdy obsługiwane będzie nowe urządzenie.
  • (Dostępne od 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: określa, czy platforma automatycznie dołącza dolne pasma 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.
  • Przywróć obsługę określającą, czy odpowiednie wpisy mają być resetowane do wartości domyślnych podczas przywracania konfiguracji hotspotu na nowym urządzeniu: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Pamiętaj, że domyślnie ustawiona jest wartość true, co oznacza, że są one resetowane. Ma to kluczowe znaczenie, jeśli nowe urządzenie nie obsługuje tej konfiguracji.
  • Funkcje sprzętowe:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (dostępny od 13) config_wifiSoftapOweTransitionSupported
    • (dostępny od 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (dostępny od 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 zgodności (CTS), które umożliwiają sprawdzenie działania funkcji hotspotu. Funkcję hotspotu możesz też przetestować za pomocą narzędzia Vendor Test Suite (VTS).

Testy jednostkowe

Sprawdź pakiet hotspotu, 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 aktywować testy CTS, uruchom polecenie:

atest android.net.wifi.cts.WifiManagerTest

Vendor Test Suite (VTS)

Jeśli interfejs HIDL jest zaimplementowany, uruchom polecenie:

atest VtsHalWifiHostapdV1_2Target

Jeśli interfejs AIDL jest zaimplementowany, uruchom polecenie:

atest VtsHalHostapdTargetTest