Pemindaian offload jaringan pilihan Wi-Fi

Pemindaian pengalihan jaringan pilihan (PNO) Wi-Fi adalah pemindaian Wi-Fi berdaya rendah yang terjadi secara berkala saat perangkat terputus dari Wi-Fi dan layar nonaktif. Pemindaian PNO digunakan untuk menemukan dan terhubung ke jaringan tersimpan. Pemindaian ini dijadwalkan oleh framework menggunakan perintah NL80211_CMD_START_SCHED_SCAN. Untuk mengetahui informasi selengkapnya, lihat nl80211.h.

Mengoptimalkan penggunaan daya dengan informasi mobilitas perangkat

Di perangkat yang menjalankan Android 9 atau yang lebih rendah, saat perangkat terputus dari Wi-Fi dan layar nonaktif, pemindaian PNO terjadi dengan interval 20 detik untuk tiga pemindaian pertama, lalu melambat menjadi satu pemindaian setiap 60 detik untuk semua pemindaian berikutnya. Pemindaian PNO berhenti saat jaringan tersimpan ditemukan atau layar diaktifkan.

Android 10 memperkenalkan metode API opsional bernama setDeviceMobilityState() di WifiManager yang meningkatkan interval antara pemindaian PNO berdasarkan status mobilitas perangkat untuk mengurangi konsumsi daya.

Kemungkinan status mobilitas adalah:

  • DEVICE_MOBILITY_STATE_UNKNOWN: Mobilitas tidak diketahui
  • DEVICE_MOBILITY_STATE_HIGH_MVMT: Saat mengendarai sepeda atau berada di dalam kendaraan bermotor
  • DEVICE_MOBILITY_STATE_LOW_MVMT: Berjalan atau berlari
  • DEVICE_MOBILITY_STATE_STATIONARY: Tidak bergerak

Jika perangkat tidak bergerak, framework Android akan meningkatkan interval antara pemindaian PNO dari 60 detik menjadi 180 detik untuk mengurangi konsumsi daya. Pengoptimalan ini dilakukan dengan asumsi bahwa perangkat tidak mungkin menemukan jaringan baru dalam pemindaian PNO saat perangkat tidak bergerak.

Jika perangkat berada dalam status mobilitas lain atau jika metode tidak dipanggil, perangkat akan menggunakan perilaku pemindaian PNO default.

Implementasi

Untuk menerapkan fitur pengoptimalan daya ini di perangkat yang menjalankan Android 10 atau yang lebih tinggi, dapatkan informasi mobilitas perangkat dan panggil metode setDeviceMobilityState() dari aplikasi sistem kustom.