Hotspot Wi-Fi (soft AP)

Android zapewnia obsługę hotspotu Wi-Fi (soft 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 umożliwiające uzyskanie tych funkcje zabezpieczeń. Producenci urządzeń mogą też określać podstawowe możliwości urządzenia. za pomocą nakładek.

Pamiętaj, że niektóre z tych interfejsów API to systemowe interfejsy API, dla których dostęp więc dostęp do nich będzie miała tylko systemowa aplikacja Ustawienia.

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

Domyślną implementacją hotspotu Wi-Fi z włączonym tetheringiem jest AOSP Ustawienia aplikacji, ale nie wykorzystuje wszystkich interfejsów API funkcji Soft AP. konfiguracji.

Aby obsługiwać tethering przez hotspot lub lokalny hotspot: aplikacja musi wykonywać te funkcje:

  1. Zarejestruj wywołanie zwrotne, aby uzyskać możliwości urządzenia za pomocą WifiManager#registerSoftApCallback, jeśli chcesz korzystać z hotspotu tetheringu lub WifiManager#registerLocalOnlyHotspotSoftApCallback tylko lokalnie hotspot.

    Wywołanie zwrotne SoftApCallback udostępnia te metody:

    • SoftApCallback#onCapabilityChanged: Podaje informacje o możliwościach urządzenia, w tym o maksymalnej liczbę obsługiwanych klientów oraz informacje o obsłudze SAE lub ACS.
    • SoftApCallback#onInfoChanged: Udostępnia informacje o uruchomionym Soft AP (ważne tylko raz) ), w tym informacje o paśmie i częstotliwości.
    • SoftApCallback#onConnectedClientsChanged: Udostępnia listę połączonych klientów. Dla każdego klienta można uzyskać adres MAC. Aby uzyskać informacje o adresie IP, użyj funkcji TetheringEventCallback#onClientsChanged oddzwonienie.
    • SoftApCallback#onStateChanged: Udostępnia aktualne informacje o stanie funkcji soft AP w miarę jego włączenia oraz wyłączono.
    • SoftApCallback#onBlockedClientConnecting: Zawiera informacje o zablokowanym kliencie na jeden z tych typów: przyczyny zablokowania: urządzenie osiągnęło maksymalną liczbę klientów, które może obsługiwać, lub klient nie ma wyraźnego upoważnienia do połączyć.

W przypadku hotspotu powiązanego:

  1. Skonfiguruj konfigurację opcjonalnego punktu dostępu pod kątem tetheringu, wywołując metodę WifiManager#setSoftApConfiguration i udostępnianie instancji SoftApConfiguration. Budowanie SoftApConfiguration za pomocą SoftApConfiguration.Builder. zajęcia.
  2. Rozpocznij tethering, dzwoniąc pod numer TetheringManager#startTethering

W przypadku hotspotu tylko lokalnego:

  1. Uruchom lokalny hotspot z określoną konfiguracją pozornego punktu dostępu przez Wywołując funkcję WifiManager#startLocalOnlyHotspot .

Wdrażanie list dozwolonych i blokowanych

Typowym wymogiem przez operatora jest udostępnienie użytkownikowi opcji które można powiązać z programem Soft AP. Dostępnych jest kilka jak to działa:

  • Ogranicz maksymalną liczbę urządzeń, które można powiązać z programowym punktem dostępu za pomocą funkcji SoftApConfiguration.Builder#setMaxNumberOfClients. Upewnij się, że: podaj liczbę, która jest mniejsza niż maksymalna liczba obsługiwanych klientów przez urządzenie. Maksymalna liczba numerów, które można uzyskać z SoftApCapability#getMaxSupportedClients
  • Zapewnij dynamiczną kontrolę przy użyciu list dozwolonych i blokowanych:

    • Domyślna konfiguracja Soft AP pozwala wszystkim urządzeniom z nowym punktem dostępu, z wyjątkiem urządzeń, których adresy MAC są dodano do playlisty SoftApConfiguration.Builder#setBlockedClientList.
    • Jeśli programowy punkt dostępu jest skonfigurowany z SoftApConfiguration.Builder#setClientControlByUserEnabled(true), jest używana lista dozwolonych.

      • Wszystkie urządzenia, których adresy MAC są podane SoftApConfiguration.Builder#setBlockedClientList ma zablokowaną możliwość z osobna.
      • Wszystkie urządzenia, których adresy MAC są podane SoftApConfiguration.Builder#setAllowedClientList są dozwolone z osobna.
      • wszystkie inne urządzenia (tzn. urządzenia z adresami MAC). nie znajdują się na liście dozwolonych lub zablokowanych) są blokowane w ale SoftApCallback#onBlockedClientConnecting jest i umożliwi aplikacji sterującej (czyli Ustawienia) wykonać działanie, np. poprosić użytkownika o potwierdzenie, a następnie dodanie urządzenia do listy dozwolonych lub blokowanych. w zależności od zachowania użytkownika.

    Pamiętaj, że urządzenia mogą korzystać z funkcji listy dozwolonych tylko wtedy, gdy jest obsługiwane przez urządzenie. Obsługę urządzenia możesz sprawdzić za pomocą SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)

Implementacja

Aby obsługiwać tethering przez hotspot lub tylko lokalny hotspot: producenci urządzeń muszą udostępnić aplikację Ustawienia, platformę, i obsługa HAL/oprogramowania:

Dostosowywanie

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

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: wartość domyślna interwału oczekiwania po wyłączeniu. Prawidłowy tylko wtedy, gdy Funkcja SoftApConfiguration#setAutoShutdownEnabled jest włączona. Można zastąpić za pomocą funkcji SoftApConfiguration#setShutdownTimeoutMillis.
  • config_wifiHardwareSoftapMaxClientCount: ograniczenie sprzętowe dla z maksymalną liczbą obsługiwanych klientów. Maksymalna liczba klientów które urządzenie obsługuje, to minimalna ilość sprzętu i łącza u operatora. ograniczenia (określone przez CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Ostateczny efekt jest udostępniana aplikacji z celem SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: wskazuje, czy urządzenie ma możliwość wymuszania rozłączenia klienta. Wymagane do włączenia zezwolenia i blokować listy. Po skontaktowaniu się z aplikacją do sterowania (aplikacja Ustawienia) za pomocą: SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
  • (dostępny od 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Określa, czy hasło programowego punktu dostępu jest wymagane do kodowania ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: czy nie aby automatycznie zmienić konfigurację pasma na dwa zakresy i przywracanie konfiguracji w chmurze, gdy nowe urządzenie jest obsługiwane.
  • (dostępny od 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Określa, czy platforma automatycznie dołącza dolne pasma do konfiguracji pasma na unikanie współistnienia.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: dynamiczny lub niedynamiczny. aktualizacja kodu kraju w trybie AP jest obsługiwana na urządzeniu.
  • Zespół pomocy dla kanałów: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList i config_wifiSoftap60gChannelList
  • Przywróć obsługę określającą, czy odpowiednie wpisy są resetowane do wartości domyślnej przy przywracaniu konfiguracji hotspotu na nowym urządzeniu: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Zwróć uwagę, że te wartości są ustawione na true, co oznacza, że wartości są resetowane. Jest to kluczowe, 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 zapewnia zestaw testów jednostkowych i testów zgodności z pakietem CTS (Compatibility Test Suite). aby sprawdzić działanie funkcji hotspotu. Funkcję hotspotu można też przetestować za pomocą 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 dołącza 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