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 berikut:
- SSID dan BSSID
- Jenis keamanan (termasuk WPA3)
- SSID tersembunyi
- Pita dan saluran pengoperasian (termasuk ACS)
- Jumlah maksimum klien yang diizinkan
- Nilai batas waktu mati otomatis
- Daftar yang diizinkan dan daftar blokir 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 memperoleh 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 Pengaturan sistem yang dapat mengaksesnya.
Mengembangkan aplikasi dengan API hotspot
Implementasi default hotspot Wi-Fi tertambat disediakan oleh aplikasi Pengaturan AOSP, namun 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 tertambat 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 sedang berjalan (hanya valid setelah dimulai), termasuk informasi pita dan frekuensi. -
SoftApCallback#onConnectedClientsChanged
: Menyediakan daftar klien yang terhubung. Untuk setiap klien, Anda bisa mendapatkan alamat MAC. Untuk mendapatkan informasi IP, gunakan panggilan balikTetheringEventCallback#onClientsChanged
. -
SoftApCallback#onStateChanged
: Memberikan pembaruan pada 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 didukungnya atau klien tidak secara eksplisit diizinkan untuk terhubung.
-
Untuk hotspot tertambat:
- Konfigurasikan konfigurasi soft AP untuk tethering dengan memanggil metode
WifiManager#setSoftApConfiguration
dan menyediakan instanceSoftApConfiguration
. BangunSoftApConfiguration
menggunakan kelasSoftApConfiguration.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 umum operator adalah memberi pengguna kontrol atas perangkat yang diizinkan untuk dikaitkan ke Soft AP. Ada beberapa mekanisme untuk melakukan hal ini:
- Batasi jumlah maksimum perangkat yang dapat dikaitkan ke soft AP menggunakan
SoftApConfiguration.Builder#setMaxNumberOfClients
. Pastikan untuk menentukan jumlah yang lebih rendah dari jumlah maksimum klien yang didukung oleh perangkat. Anda dapat memperoleh jumlah maksimum dariSoftApCapability#getMaxSupportedClients
. Berikan kontrol dinamis menggunakan daftar izinkan dan blokir:
- Konfigurasi default Soft AP memungkinkan semua perangkat untuk dikaitkan 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 ada di
SoftApConfiguration.Builder#setBlockedClientList
diblokir dari pengaitan. - Semua perangkat yang alamat MAC-nya ada di
SoftApConfiguration.Builder#setAllowedClientList
diperbolehkan dikaitkan. - Semua perangkat lain (yaitu, perangkat yang alamat MAC-nya tidak ada dalam daftar izin atau blokir) diblokir dari pengaitan tetapi
SoftApCallback#onBlockedClientConnecting
dipanggil, sehingga aplikasi pengontrol (yaitu, aplikasi Pengaturan) dapat mengambil tindakan, misalnya misalnya, meminta konfirmasi pengguna dan kemudian menambahkan perangkat ke daftar yang diizinkan atau ke daftar blokir tergantung pada perilaku pengguna.
- Semua perangkat yang alamat MAC-nya ada di
Perhatikan bahwa perangkat hanya dapat menggunakan fungsionalitas daftar yang diizinkan jika didukung pada perangkat. Anda dapat memverifikasi dukungan perangkat menggunakan
SoftApCapability#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
.- Konfigurasi default Soft AP memungkinkan semua perangkat untuk dikaitkan ke soft AP kecuali perangkat yang alamat MAC-nya ditambahkan ke
Penerapan
Untuk mendukung tethering melalui hotspot atau untuk mendukung hotspot lokal saja, produsen perangkat harus menyediakan aplikasi Pengaturan, kerangka kerja, dan dukungan HAL/firmware:
Aplikasi Pengaturan: Aplikasi Pengaturan AOSP menyediakan dasar untuk mengonfigurasi hotspot tethering dengan SSID dan kredensial keamanan. Kode ini dapat digunakan apa adanya atau dimodifikasi untuk memberikan kemampuan tambahan seperti yang dijelaskan dalam Mengembangkan aplikasi dengan API hotspot .
Kerangka: Kode kerangka kerja AOSP mendukung semua fungsi yang dijelaskan dalam Mengembangkan aplikasi dengan API hotspot .
HAL/firmware untuk hotspot: HIDL IHostapd.hal versi 1.2 atau lebih tinggi, atau AIDL IHostapd.aidl .
Kustomisasi
Untuk menyesuaikan penerapannya, produsen perangkat harus mengonfigurasi konfigurasi overlay dan operator berikut, yang didokumentasikan dalam packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml
:
-
config_wifiFrameworkSoftApShutDownTimeoutMilliseconds
: Interval batas waktu pematian default. Hanya valid jikaSoftApConfiguration#setAutoShutdownEnabled
diaktifkan. Dapat diganti menggunakanSoftApConfiguration#setShutdownTimeoutMillis
. -
config_wifiHardwareSoftapMaxClientCount
: Batasan perangkat keras untuk jumlah maksimum klien yang didukung. Jumlah maksimum klien yang didukung perangkat adalah batasan minimum perangkat keras dan operator (ditentukan olehCarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT
). Hasil akhir diberikan ke aplikasi denganSoftApCapabilities#getMaxSupportedClients
. -
config_wifiSofapClientForceDisconnectSupported
: Apakah perangkat memiliki kemampuan untuk memutuskan sambungan klien secara paksa. Diperlukan untuk mengaktifkan daftar izinkan dan blokir. Dikomunikasikan ke aplikasi pengontrol (aplikasi Pengaturan) melaluiSoftApCapabilities#areFeaturesSupported( SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT )
. - (Tersedia mulai 13)
config_wifiSoftapPassphraseAsciiEncodableCheck
: Apakah frasa sandi AP lunak harus dapat dikodekan ASCII atau tidak. -
config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported
: Apakah akan secara otomatis meningkatkan konfigurasi pengaturan pita ke pita ganda selama pemulihan konfigurasi cloud ketika perangkat baru didukung. - (Tersedia mulai 13)
config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled
: Apakah kerangka kerja secara otomatis menambahkan pita yang lebih rendah ke konfigurasi pita untuk menghindari penanganan koeksistensi. -
config_wifiSoftApDynamicCountryCodeUpdateSupported
: Apakah pembaruan kode negara dinamis dalam mode AP didukung pada perangkat atau tidak - Dukungan saluran:
config_wifiSoftap2gChannelList
,config_wifiSoftap5gChannelList
,config_wifiSoftap6gChannelList
danconfig_wifiSoftap60gChannelList
. - Pulihkan dukungan yang menentukan apakah entri terkait disetel ulang ke default saat memulihkan konfigurasi hotspot ke perangkat baru:
config_wifiSoftapResetChannelConfig
,config_wifiSoftapResetHiddenConfig
,config_wifiSoftapResetUserControlConfig
,config_wifiSoftapResetAutoShutdownTimerConfig
,config_wifiSoftapResetMaxClientSettingConfig
. Perhatikan bahwa ini disetel ketrue
secara default, artinya nilainya disetel ulang. Ini penting jika perangkat baru tidak mendukung konfigurasi tersebut. - Kemampuan perangkat keras:
-
config_wifi_softap_acs_supported
-
config_wifi_softap_sae_supported
- (Tersedia mulai 13)
config_wifiSoftapOweTransitionSupported
- (Tersedia mulai 13)
config_wifiSoftapOweSupported
-
config_wifi_softap_ieee80211ac_supported
-
config_wifiSoftapIeee80211axSupported
- (Tersedia mulai 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, pengujian integrasi (Android Connectivity Test Suite, atau ACTS), dan pengujian Compatibility Test Suite (CTS) untuk memvalidasi fitur hotspot. Fitur hotspot juga dapat diuji menggunakan Vendor Test Suite (VTS).
Tes satuan
Verifikasi paket hotspot menggunakan tes berikut.
Tes layanan:
atest packages/modules/Wifi/service/tests/wifitests/
Tes manajer:
atest packages/modules/Wifi/framework/tests/
Tes integrasi (ACTS)
Rangkaian pengujian hotspot ACTS , yang terletak di tools/test/connectivity/acts_tests/tests/google/wifi/WifiSoftApTest.py
, mengimplementasikan pengujian fungsional fitur hotspot.
Tes Rangkaian Tes Kompatibilitas (CTS).
Gunakan tes CTS untuk memvalidasi fitur hotspot. CTS mendeteksi ketika fitur ini diaktifkan dan secara otomatis menyertakan pengujian terkait.
Untuk memicu tes CTS, jalankan:
atest android.net.wifi.cts.WifiManagerTest
Rangkaian Uji Vendor (VTS)
Jika antarmuka HIDL diimplementasikan, jalankan:
atest VtsHalWifiHostapdV1_2Target
Jika antarmuka AIDL diimplementasikan, jalankan:
atest VtsHalHostapdTargetTest