Penghemat Baterai Rutin

Android 10 memperkenalkan opsi jadwal penghemat baterai yang disebut berdasarkan rutinitas . Opsi ini memungkinkan aplikasi yang dipilih oleh OEM 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 Pengaturan 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 berdasarkan setelan rutin , maka Anda akan menyetel nilai konfigurasi ini:

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

Sekarang telepon akan menampilkan opsi berdasarkan rutin . Untuk memverifikasi, buat gambar Anda, flash ke ponsel, dan navigasikan ke Pengaturan > Baterai > Penghemat Baterai > Jadwal Penghemat Baterai . Opsi berdasarkan rutin akan muncul.

Default di luar ambang batas

Bidang config_dynamicPowerSavingsDefaultDisableThreshold yang baru menentukan tingkat baterai saat sistem mematikan penghemat baterai, jika diaktifkan berdasarkan penjadwal rutin . Default sistem adalah 80%, tetapi Anda dapat mengubahnya.

Konfigurasi aplikasi

Izin

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

Contoh pemberian izin privapp ke suatu aplikasi:

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

Jika Anda tidak memberikan izin ini terlebih dahulu ke versi aplikasi pada image sistem, aplikasi tidak dapat memperoleh izin atau memanggil API dengan benar. Sistem tidak memberikan umpan balik apa pun selain kesalahan izin biasa, jadi pastikan Anda dapat memanggil API dan mengamati dampaknya.

Instalasi

Agar berdasarkan rutinitas agar berfungsi dengan baik, Anda harus melakukan pra-instal aplikasi pada image sistem dengan izin yang diperlukan. Berikan hanya satu aplikasi izin POWER_SAVER dan izinkan aplikasi tersebut mengontrol berdasarkan API rutin . Perilaku fitur ketika lebih dari satu aplikasi mencoba menggunakan izin dan API tidak didukung dan tidak ditentukan.

Memicu penghemat baterai

Lebah

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

public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)

Jika opsi berdasarkan jadwal penghemat baterai rutin diaktifkan dan aplikasi memanggil metode ini dengan nilai true untuk powerSaveHint , maka penghemat baterai akan aktif. disableThreshold sehingga jika aplikasi tidak dapat berkomunikasi dengan sistem, sistem tetap mengetahui berapa persentase baterai yang aman untuk mematikan penghemat baterai.

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

Untuk memverifikasi bahwa API dipanggil dengan sukses, pengaturan kueri global untuk memverifikasi bahwa pengaturan dukungan mengubah nilai 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 harus:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0

Anda dapat memeriksa nilai-nilai ini menggunakan perintah adb ini:

adb shell settings get global <setting-name>

Verifikasi

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

  • Pengguna memilih berdasarkan persentase di UI jadwal penghemat baterai dan memilih 15%. Penghemat baterai akan aktif secara otomatis HANYA ketika 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 mati jika perangkat diisi daya hingga tingkat ambang batas yang ditentukan dan dicabut.
  • Pengguna tidak memilih apa pun di UI jadwal penghemat baterai. Penghemat baterai TIDAK PERNAH menyala secara otomatis.
  • Jika aplikasi mengaktifkan penghemat baterai dan pengguna secara manual mengganti penghemat baterai agar mati lagi (menggunakan Setelan Cepat, Setelan, dll.), aplikasi harus TETAP MATI hingga pengguna menyalakannya kembali secara manual atau mencolokkan perangkat.