Hotspot Wi-Fi (Soft AP)

Android menyediakan dukungan untuk hotspot Wi-Fi (Soft AP) termasuk tethering melalui {i>hotspot<i} Wi-Fi dan hotspot Wi-Fi khusus lokal.

Fitur soft AP memungkinkan konfigurasi berikut:

  • SSID dan BSSID
  • Jenis keamanan (termasuk WPA3)
  • SSID Tersembunyi
  • Pita operasi dan saluran (termasuk ACS)
  • Jumlah maksimum klien yang diizinkan
  • Nilai waktu tunggu penonaktifan otomatis
  • Daftar yang diizinkan dan yang tidak diizinkan untuk memungkinkan kontrol pengguna atas perangkat terkait
  • Tingkat pengacakan MAC untuk AP BSSID
  • 802.11ax dan 802.11be

Kemampuan perangkat menentukan ketersediaan kontrol ini. Android 11 memperkenalkan API untuk mendapatkan kemampuan IT. Produsen perangkat juga dapat menentukan kemampuan perangkat dasar menggunakan overlay.

Perlu diketahui bahwa beberapa API adalah API sistem dan dibatasi dalam izin akses sehingga hanya aplikasi {i>Settings<i} sistem yang dapat mengaksesnya.

Mengembangkan aplikasi dengan API hotspot

Implementasi default hotspot Wi-Fi yang di-tethering disediakan oleh AOSP Aplikasi setelan, tetapi tidak menjalankan semua API untuk Soft AP konfigurasi Anda.

Untuk mendukung tethering melalui hotspot atau hotspot khusus lokal, aplikasi harus menjalankan fungsi berikut:

  1. Daftarkan callback untuk mendapatkan kemampuan perangkat menggunakan WifiManager#registerSoftApCallback untuk hotspot yang di-tethering atau WifiManager#registerLocalOnlyHotspotSoftApCallback untuk khusus lokal hotspot.

    Callback SoftApCallback menyediakan metode berikut:

    • SoftApCallback#onCapabilityChanged: Memberikan informasi tentang kemampuan perangkat, termasuk maksimum jumlah klien yang didukung, dan apakah SAE atau ACS didukung.
    • SoftApCallback#onInfoChanged: Memberikan informasi tentang Soft AP yang sedang berjalan (hanya berlaku sekali dimulai), termasuk informasi band dan frekuensi.
    • SoftApCallback#onConnectedClientsChanged: Memberikan daftar klien yang terhubung. Untuk setiap klien, Anda dapat memperoleh alamat MAC. Untuk mendapatkan informasi IP, gunakan Callback TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged: Memberikan pembaruan tentang status Soft AP saat diaktifkan dan dinonaktifkan.
    • SoftApCallback#onBlockedClientConnecting: Memberikan informasi klien yang diblokir dengan salah satu hal berikut alasan pemblokiran: perangkat mencapai jumlah maksimum klien yang dapat didukung atau klien tidak secara eksplisit diizinkan untuk hubungkan.

Untuk hotspot yang di-tethering:

  1. Konfigurasi konfigurasi soft AP untuk tethering dengan memanggil WifiManager#setSoftApConfiguration dan menyediakan instance SoftApConfiguration. Bangun SoftApConfiguration menggunakan SoftApConfiguration.Builder .
  2. Mulai tethering dengan memanggil metode tethering di TetheringManager#startTethering

Untuk hotspot khusus lokal:

  1. Memulai hotspot khusus lokal dengan konfigurasi soft AP spesifik dengan memanggil WifiManager#startLocalOnlyHotspot .

Menerapkan daftar izin dan blokir

Persyaratan ekspedisi yang biasa adalah memberikan kontrol kepada pengguna atas perangkat yang diizinkan untuk berhubungan dengan Soft AP. Ada beberapa mekanisme untuk melakukan ini:

  • Batasi jumlah maksimum perangkat yang dapat dikaitkan dengan soft AP menggunakan SoftApConfiguration.Builder#setMaxNumberOfClients. Pastikan untuk tentukan angka yang lebih rendah dari jumlah maksimum klien yang didukung oleh perangkat. Anda bisa mendapatkan jumlah maksimum dari SoftApCapability#getMaxSupportedClients.
  • Menyediakan kontrol dinamis menggunakan daftar izinkan dan blokir:

    • Konfigurasi {i>default<i} dari {i>Soft AP<i} memungkinkan semua perangkat untuk dikaitkan dengan AP sementara kecuali untuk perangkat yang alamat MAC-nya ditambahkan ke SoftApConfiguration.Builder#setBlockedClientList.
    • Jika Soft AP dikonfigurasi dengan SoftApConfiguration.Builder#setClientControlByUserEnabled(true), daftar yang diizinkan digunakan.

      • Semua perangkat yang alamat MAC-nya ada SoftApConfiguration.Builder#setBlockedClientList diblokir dari asosiasi.
      • Semua perangkat yang alamat MAC-nya ada SoftApConfiguration.Builder#setAllowedClientList diizinkan asosiasi.
      • Semua perangkat lainnya (yaitu, perangkat yang alamat MAC-nya tidak tercantum dalam daftar yang diizinkan atau diblokir) diblokir dari objek atribusi, tetapi SoftApCallback#onBlockedClientConnecting dipanggil, sehingga aplikasi yang mengontrol (yaitu, aplikasi Setelan) untuk mengambil tindakan, misalnya, meminta konfirmasi dari pengguna dan kemudian menambahkan perangkat ke daftar yang diizinkan atau daftar blokir tergantung pada perilaku pengguna.

    Perhatikan bahwa perangkat hanya dapat menggunakan fungsi daftar yang diizinkan jika didukung pada perangkat. Anda dapat memverifikasi dukungan perangkat menggunakan SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).

Implementasi

Untuk mendukung tethering melalui hotspot atau untuk mendukung hotspot khusus lokal, produsen perangkat harus menyediakan aplikasi Setelan, kerangka kerja, dan dukungan HAL/firmware:

Penyesuaian

Untuk menyesuaikan implementasinya, produsen perangkat harus mengonfigurasi konfigurasi operator dan overlay berikut, yang didokumentasikan dalam packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: Default interval waktu tunggu penonaktifan. Hanya berlaku jika SoftApConfiguration#setAutoShutdownEnabled diaktifkan. Dapat diganti menggunakan SoftApConfiguration#setShutdownTimeoutMillis.
  • config_wifiHardwareSoftapMaxClientCount: Keterbatasan hardware untuk jumlah maksimum klien yang didukung. Jumlah maksimum klien yang didukung perangkat adalah perangkat keras dan operator minimum batasan (ditentukan oleh CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT). Hasil akhir disediakan ke aplikasi dengan SoftApCapabilities#getMaxSupportedClients.
  • config_wifiSofapClientForceDisconnectSupported: Apakah perangkat memiliki kemampuan untuk memutuskan klien secara paksa. Diperlukan untuk mengaktifkan izin daftar blokir. Berkomunikasi ke aplikasi yang mengontrol (aplikasi Setelan) melalui SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).
  • (Tersedia dari 13) config_wifiSoftapPassphraseAsciiEncodableCheck: Apakah frasa sandi soft AP diperlukan atau tidak harus dapat dienkode ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: Apakah bisa atau tidak secara otomatis mengupgrade konfigurasi setelan band ke dual band selama pemulihan konfigurasi cloud ketika perangkat baru didukung.
  • (Tersedia dari 13) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: Apakah framework secara otomatis menambahkan tali bawah ke konfigurasi band untuk menghindari penanganan koeksistensi.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: Apakah dinamis atau tidak pembaruan kode negara dalam mode AP didukung di perangkat
  • Dukungan channel: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList, dan config_wifiSoftap60gChannelList.
  • Dukungan pemulihan yang menentukan apakah entri yang sesuai direset ke default saat memulihkan konfigurasi hotspot ke perangkat baru: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. Perhatikan bahwa ini ditetapkan ke true secara default, yang berarti nilai tersebut akan direset. Hal ini sangat penting jika perangkat baru tidak mendukung konfigurasi.
  • Kemampuan perangkat keras:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (Tersedia dari 13) config_wifiSoftapOweTransitionSupported
    • (Tersedia dari 13) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Tersedia dari 13) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Validasi

Android menyediakan serangkaian pengujian unit dan pengujian Compatibility Test Suite (CTS) untuk memvalidasi fitur hotspot. Fitur hotspot juga dapat diuji menggunakan Vendor Test Suite (VTS).

Pengujian unit

Verifikasi paket hotspot menggunakan pengujian berikut.

  • Pengujian layanan:

    atest packages/modules/Wifi/service/tests/wifitests/
    
  • Pengelola menguji:

    atest packages/modules/Wifi/framework/tests/
    

Pengujian Compatibility Test Suite (CTS)

Gunakan uji CTS untuk memvalidasi fitur hotspot. CTS mendeteksi saat fitur diaktifkan dan secara otomatis menyertakan pengujian terkait.

Untuk memicu uji CTS, jalankan:

atest android.net.wifi.cts.WifiManagerTest

Vendor Test Suite (VTS)

Jika antarmuka HIDL diimplementasikan, jalankan:

atest VtsHalWifiHostapdV1_2Target

Jika antarmuka AIDL diimplementasikan, jalankan:

atest VtsHalHostapdTargetTest