Penghemat baterai rutin

Android 10 memperkenalkan opsi jadwal penghemat baterai yang disebut berdasarkan rutinitas. Opsi ini memungkinkan aplikasi yang dipilih oleh OEM untuk memberikan sinyal ke sistem untuk penjadwalan penghemat baterai yang lebih cerdas. Opsi ini memerlukan konfigurasi, dan bersifat opsional untuk diterapkan.

Konfigurasi perangkat

Spesifikasi penyedia

Untuk memberi tahu UI Setelan bahwa perangkat dikonfigurasi dengan benar, gunakan overlay konfigurasi Anda untuk mengganti nilai config_batterySaverScheduleProvider dengan nama paket aplikasi Anda.

Misalnya, jika Anda ingin paket aplikasi com.google.android.apps.turbo mengontrol setelan berdasarkan rutinitas, Anda akan menetapkan nilai konfigurasi ini:

<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>

Sekarang, ponsel akan menampilkan opsi berdasarkan rutinitas. Untuk memverifikasi, buat image Anda, flash ke ponsel, lalu buka Setelan > Baterai > Penghemat Baterai > Jadwal Penghemat Baterai. Opsi berdasarkan rutinitas akan muncul.

Nilai minimum nonaktif default

Kolom config_dynamicPowerSavingsDefaultDisableThreshold yang baru menentukan level baterai saat sistem menonaktifkan penghemat baterai, jika diaktifkan oleh penjadwal berdasarkan rutinitas. Default sistem adalah 80%, tetapi Anda dapat mengubahnya.

Konfigurasi aplikasi

Izin

API yang diperlukan agar aplikasi mengaktifkan penghemat baterai dari aplikasi dilindungi oleh izin android.permission.POWER_SAVER. Ini adalah izin tanda tangan/hak istimewa, jadi berikan izin ini di privapp-whitelist Anda kepada aplikasi yang ingin Anda izinkan untuk memicu penghemat baterai.

Contoh pemberian izin privapp ke aplikasi:

<privapp-permissions package="com.google.android.apps.turbo">
   <permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>

Jika Anda tidak memberikan izin ini sebelumnya ke versi aplikasi pada image sistem, aplikasi tidak dapat memperoleh izin atau memanggil API dengan benar. Sistem tidak memberikan masukan apa pun selain error izin biasa, jadi verifikasi bahwa Anda dapat memanggil API dan mengamati efeknya.

Penginstalan

Agar berdasarkan rutinitas berfungsi dengan baik, Anda harus menginstal aplikasi terlebih dahulu di image sistem dengan izin yang diperlukan. Beri hanya satu aplikasi izin POWER_SAVER dan izinkan aplikasi tersebut mengontrol berdasarkan API rutin. Perilaku fitur saat lebih dari satu aplikasi mencoba menggunakan izin dan API tidak didukung dan tidak ditentukan.

Memicu penghemat baterai

API

Dengan asumsi penyiapan berhasil sejauh ini, aplikasi OEM yang ditentukan dalam konfigurasi harus dapat berhasil memanggil metode terkait di PowerManager untuk memicu penghemat baterai:

public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)

Jika opsi jadwal penghemat baterai berdasarkan rutinitas diaktifkan dan aplikasi memanggil metode ini dengan nilai true untuk powerSaveHint, penghemat baterai akan diaktifkan. Tentukan disableThreshold sehingga jika aplikasi tidak dapat berkomunikasi dengan sistem, sistem tetap mengetahui pada persentase baterai berapa penghemat baterai dapat dinonaktifkan dengan aman.

API ini tunduk pada penggantian pengguna dan penundaan penghemat baterai dengan cara yang sama seperti penghemat baterai otomatis berbasis persentase. Lihat dokumentasi API untuk mengetahui informasi selengkapnya.

Untuk memverifikasi bahwa API berhasil dipanggil, kueri setelan global untuk memverifikasi bahwa nilai setelan pendukung berubah sesuai dengan panggilan API.

Misalnya, jika pengguna memilih mode penghemat baterai rutin dan aplikasi memanggil setDynamicPowerSaveHint(true, 10), setelan global harus memiliki nilai berikut:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1

Jika Anda kemudian memanggil setDynamicPowerSaveHint(false, 25), nilainya adalah:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0

Anda dapat memeriksa nilai ini menggunakan perintah adb berikut:

adb shell settings get global <setting-name>

Verifikasi

Tidak ada cara otomatis untuk memverifikasi fitur ini karena tidak ada cara untuk mengetahui perilaku yang akan digunakan OEM untuk memutuskan kapan harus memicu mode penghemat baterai rutin. Oleh karena itu, OEM bertanggung jawab untuk menguji integrasi mereka guna memastikan bahwa perilakunya memenuhi ekspektasi. Secara khusus, verifikasi bahwa perangkat dapat menyelesaikan tugas berikut:

  • Pengguna memilih berdasarkan persentase di UI jadwal penghemat baterai dan memilih 15%. Penghemat baterai akan otomatis aktif HANYA saat baterai mencapai 15%.
  • Pengguna memilih berdasarkan rutinitas di UI jadwal penghemat baterai. Saat aplikasi memanggil API dengan true, penghemat baterai akan aktif. Selain itu, penghemat baterai otomatis dinonaktifkan jika perangkat diisi daya hingga level minimum yang ditentukan dan dicabut dari sumber listrik.
  • Pengguna memilih tidak ada di UI jadwal penghemat baterai. Penghemat baterai SEHARUSNYA TIDAK PERNAH aktif secara otomatis.
  • Jika aplikasi mengaktifkan penghemat baterai dan pengguna secara manual mengganti penghemat baterai menjadi nonaktif lagi (menggunakan Setelan Cepat, Setelan, dll.), penghemat baterai tersebut akan TETAP NONAKTIF hingga pengguna mengaktifkannya kembali secara manual atau mencolokkan perangkat.