Android menyediakan dukungan untuk hotspot Wi-Fi (Soft AP) termasuk tethering melalui hotspot Wi-Fi dan hotspot Wi-Fi khusus lokal.
Fitur soft AP memungkinkan konfigurasi hal berikut:
- SSID dan BSSID
- Jenis keamanan (termasuk WPA3)
- SSID Tersembunyi
- Band dan saluran operasi (termasuk ACS)
- Jumlah maksimum klien yang diizinkan
- Nilai waktu tunggu penonaktifan otomatis
- Daftar yang diizinkan dan daftar yang diblokir untuk mengizinkan kontrol pengguna atas perangkat terkait
- Tingkat pengacakan MAC untuk BSSID AP
- 802.11ax dan 802.11be
Kemampuan perangkat menentukan ketersediaan kontrol ini. Android 11 memperkenalkan API untuk mendapatkan kemampuan ini. Produsen perangkat juga dapat menentukan kemampuan perangkat dasar menggunakan overlay.
Perhatikan bahwa beberapa API adalah API sistem dan dibatasi melalui izin sehingga hanya aplikasi Setelan sistem yang dapat mengaksesnya.
Mengembangkan aplikasi dengan API hotspot
Penerapan default hotspot Wi-Fi yang tertambat disediakan oleh aplikasi Setelan AOSP, tetapi tidak menggunakan semua API untuk konfigurasi Soft AP.
Untuk mendukung tethering melalui hotspot atau hotspot khusus lokal, aplikasi harus menjalankan fungsi berikut:
Daftarkan callback untuk mendapatkan kemampuan perangkat menggunakan
WifiManager#registerSoftApCallback
untuk hotspot yang di-tethering atauWifiManager#registerLocalOnlyHotspotSoftApCallback
untuk hotspot khusus lokal.Callback
SoftApCallback
menyediakan metode berikut:SoftApCallback#onCapabilityChanged
: Memberikan informasi tentang kemampuan perangkat, termasuk jumlah maksimum klien yang didukung, dan apakah SAE atau ACS didukung.SoftApCallback#onInfoChanged
: Memberikan informasi tentang Soft AP yang berjalan (hanya valid setelah 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 callbackTetheringEventCallback#onClientsChanged
.SoftApCallback#onStateChanged
: Memberikan pembaruan tentang status Soft AP saat diaktifkan dan dinonaktifkan.SoftApCallback#onBlockedClientConnecting
: Memberikan informasi klien yang diblokir dengan salah satu alasan pemblokiran berikut: perangkat mencapai jumlah maksimum klien yang dapat didukung atau klien tidak diberi otorisasi secara eksplisit untuk terhubung.
Untuk hotspot yang di-tethering:
- Konfigurasikan konfigurasi soft AP untuk tethering dengan memanggil metode
WifiManager#setSoftApConfiguration
dan menyediakan instanceSoftApConfiguration
. BuatSoftApConfiguration
menggunakan classSoftApConfiguration.Builder
. - Mulai tethering dengan memanggil metode tethering di
TetheringManager#startTethering
.
Untuk hotspot khusus lokal:
- Mulai hotspot khusus lokal dengan konfigurasi soft AP tertentu dengan
memanggil
metode
WifiManager#startLocalOnlyHotspot
.
Menerapkan daftar izin dan blokir
Persyaratan operator umum adalah memberikan kontrol perangkat yang diizinkan untuk dikaitkan ke Soft AP kepada pengguna. Ada beberapa mekanisme untuk melakukannya:
- Batasi jumlah maksimum perangkat yang dapat dikaitkan ke soft AP
menggunakan
SoftApConfiguration.Builder#setMaxNumberOfClients
. Pastikan untuk menentukan angka yang lebih rendah dari jumlah maksimum klien yang didukung oleh perangkat. Anda bisa mendapatkan jumlah maksimum dariSoftApCapability#getMaxSupportedClients
. Berikan kontrol dinamis menggunakan daftar yang diizinkan dan tidak diizinkan:
- Konfigurasi default Soft AP memungkinkan semua perangkat
terhubung ke soft AP kecuali perangkat yang alamat MAC-nya
ditambahkan ke
SoftApConfiguration.Builder#setBlockedClientList
. Jika Soft AP dikonfigurasi dengan
SoftApConfiguration.Builder#setClientControlByUserEnabled(true)
, daftar yang diizinkan akan digunakan.- Semua perangkat yang alamat MAC-nya berada di
SoftApConfiguration.Builder#setBlockedClientList
akan diblokir dari asosiasi. - Semua perangkat yang alamat MAC-nya berada di
SoftApConfiguration.Builder#setAllowedClientList
diizinkan untuk dikaitkan. - Semua perangkat lain (yaitu, perangkat yang alamat MAC-nya
tidak ada dalam daftar yang diizinkan atau diblokir) diblokir dari
asosiasi, tetapi
SoftApCallback#onBlockedClientConnecting
dipanggil, yang memungkinkan aplikasi pengontrol (yaitu, aplikasi Setelan) untuk mengambil tindakan, misalnya, meminta konfirmasi pengguna, lalu menambahkan perangkat ke daftar yang diizinkan atau ke daftar yang diblokir bergantung pada perilaku pengguna.
- Semua perangkat yang alamat MAC-nya berada di
Perhatikan bahwa perangkat hanya dapat menggunakan fungsi daftar yang diizinkan jika didukung di perangkat. Anda dapat memverifikasi dukungan perangkat menggunakan
SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- Konfigurasi default Soft AP memungkinkan semua perangkat
terhubung ke soft AP kecuali perangkat yang alamat MAC-nya
ditambahkan ke
Implementasi
Untuk mendukung tethering melalui hotspot atau untuk mendukung hotspot khusus lokal, produsen perangkat harus menyediakan dukungan aplikasi Setelan, framework, dan HAL/firmware:
Aplikasi Setelan: Aplikasi Setelan AOSP menyediakan dasar pengukuran untuk mengonfigurasi hotspot tethering dengan SSID dan kredensial keamanan. Kode ini dapat digunakan apa adanya atau diubah untuk memberikan kemampuan tambahan seperti yang dijelaskan dalam Mengembangkan aplikasi dengan API hotspot.
Framework: Kode framework AOSP mendukung semua fungsi yang dijelaskan dalam Mengembangkan aplikasi dengan API hotspot.
HAL/firmware untuk hotspot: HIDL IHostapd.hal versi 1.2 atau yang lebih tinggi, atau AIDL IHostapd.aidl.
Penyesuaian
Untuk menyesuaikan penerapan, produsen perangkat harus mengonfigurasi
overlay dan konfigurasi operator berikut, yang didokumentasikan dalam
packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: Interval waktu tunggu penonaktifan default. Hanya berlaku jikaSoftApConfiguration#setAutoShutdownEnabled
diaktifkan. Dapat diganti menggunakanSoftApConfiguration#setShutdownTimeoutMillis
.config_wifiHardwareSoftapMaxClientCount
: Batasan hardware untuk jumlah maksimum klien yang didukung. Jumlah maksimum klien yang didukung perangkat adalah minimum dari batasan hardware dan operator (ditentukan olehCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Hasil akhir disediakan ke aplikasi denganSoftApCapabilities#getMaxSupportedClients
.config_wifiSofapClientForceDisconnectSupported
: Apakah perangkat memiliki kemampuan untuk memutuskan koneksi klien secara paksa. Diperlukan untuk mengaktifkan daftar izin dan blokir. Dikomunikasikan ke aplikasi yang mengontrol (aplikasi Setelan) melaluiSoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT)
.- (Tersedia dari 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Apakah frasa sandi soft AP harus dienkode dalam ASCII atau tidak. config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: Apakah akan mengupgrade konfigurasi setelan band secara otomatis ke band ganda selama pemulihan konfigurasi cloud saat perangkat baru didukung.- (Tersedia mulai 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Apakah framework secara otomatis menambahkan band yang lebih rendah ke konfigurasi band untuk menghindari penanganan koeksistensi. config_wifiSoftApDynamicCountryCodeUpdateSupported
: Apakah update kode negara dinamis dalam mode AP didukung di perangkat atau tidak- Dukungan saluran:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
, danconfig_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 nilai ini ditetapkan ketrue
secara default, yang berarti nilai direset. Hal ini penting jika perangkat baru tidak mendukung konfigurasi. - Kemampuan hardware:
config_wifi_softap_acs_supported
config_wifi_softap_sae_supported
- (Tersedia dari 13 model)
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/
Pengujian pengelola:
atest packages/modules/Wifi/framework/tests/
Pengujian Compatibility Test Suite (CTS)
Gunakan pengujian CTS untuk memvalidasi fitur hotspot. CTS mendeteksi saat fitur diaktifkan dan 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