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 diimplementasikan.

Konfigurasi perangkat

Bagian ini menjelaskan cara mengonfigurasi perangkat untuk opsi Berdasarkan rutinitas.

Spesifikasi penyedia

Untuk memberi tahu UI Setelan bahwa perangkat dikonfigurasi dengan benar, gunakan overlay konfigurasi 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, tetapkan nilai konfigurasi ini:

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

Untuk memverifikasi, buat image, flash ke perangkat, dan buka Setelan

Baterai > Penghemat Baterai > Jadwal Penghemat Baterai. Opsi Berdasarkan rutinitas akan muncul.

Batas nonaktif default

Kolom config_dynamicPowerSavingsDefaultDisableThreshold menentukan level baterai saat sistem menonaktifkan Penghemat Baterai jika penjadwal Berdasarkan rutinitas mengaktifkannya. Default sistem adalah 80%, tetapi Anda dapat mengubahnya.

Konfigurasi aplikasi

Bagian ini menjelaskan cara mengonfigurasi aplikasi untuk menggunakan opsi Berdasarkan rutinitas.

Izin

API yang diperlukan agar aplikasi dapat mengaktifkan Penghemat Baterai rutin dilindungi oleh izin android.permission.POWER_SAVER. Ini adalah izin tanda tangan atau izin istimewa. Artinya, aplikasi harus berada di direktori priv-app pada image sistem, dan Anda harus memberikan izin ini secara eksplisit.

Untuk aplikasi istimewa, Anda harus memberikan izin dalam file XML konfigurasi sistem di direktori /etc/permissions/ pada partisi yang sama dengan aplikasi. Misalnya, untuk memberikan izin android.permission.POWER_SAVER ke aplikasi dengan nama paket com.google.android.apps.turbo:

<!-- File located at /etc/permissions/privapp-permissions-DEVICE_NAME.xml -->
<permissions>
    <privapp-permissions package="com.google.android.apps.turbo">
        <permission name="android.permission.POWER_SAVER"/>
    </privapp-permissions>
</permissions>

Jika Anda tidak memberikan izin ini terlebih dahulu ke aplikasi pada image sistem, aplikasi tidak dapat memperoleh izin atau memanggil API dengan berhasil. Sistem tidak memberikan masukan di luar error izin standar, sehingga penting untuk memverifikasi bahwa aplikasi dapat memanggil API dan mengamati efeknya.

Penginstalan

Agar Berdasarkan rutinitas berfungsi dengan baik, Anda harus menginstal aplikasi terlebih dahulu pada image sistem dengan izin yang diperlukan. Hanya berikan izin android.permission.POWER_SAVER ke satu aplikasi dan izinkan aplikasi tersebut mengontrol API Berdasarkan rutinitas. Perilaku fitur tidak didukung dan tidak ditentukan jika lebih dari satu aplikasi mencoba menggunakan izin dan API.

Memicu Penghemat Baterai rutin

Bagian ini menjelaskan cara aplikasi Anda dapat memicu Penghemat Baterai Berdasarkan rutinitas menggunakan API yang disediakan.

API

Jika penyiapan berhasil, aplikasi OEM yang ditentukan dalam konfigurasi 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 persentase baterai saat aman untuk menonaktifkan 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 mengetahui informasi selengkapnya.

Untuk memverifikasi bahwa API dipanggil dengan berhasil, kueri setelan global untuk mengonfirmasi bahwa nilai setelan pendukung berubah sesuai dengan panggilan API. Misalnya, jika Anda memilih mode Penghemat Baterai Berdasarkan rutinitas dan aplikasi memanggil setDynamicPowerSaveHint(true, 10), setelan global akan 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 ini:

adb shell settings get global <setting-name>

Verifikasi

Tidak ada cara otomatis untuk memverifikasi fitur ini karena OEM menentukan perilaku yang memicu mode Penghemat Baterai Berdasarkan rutinitas. OEM harus menguji integrasinya untuk memverifikasi bahwa perilaku tersebut memenuhi ekspektasi. Secara khusus, verifikasi bahwa perangkat dapat melakukan tugas berikut:

  • Berdasarkan persentase: Jika Anda memilih Berdasarkan persentase di UI Jadwal Penghemat Baterai dan memilih 15%, Penghemat Baterai akan otomatis diaktifkan hanya saat baterai mencapai 15%.
  • Berdasarkan rutinitas: Jika Anda memilih Berdasarkan rutinitas di UI Jadwal Penghemat Baterai, Penghemat Baterai akan diaktifkan saat aplikasi memanggil API dengan true. Selain itu, Penghemat Baterai akan otomatis dinonaktifkan jika perangkat diisi daya hingga level batas yang ditunjukkan dan dicabut.
  • Tidak ada: Jika Anda memilih Tidak ada di UI Jadwal Penghemat Baterai , Penghemat Baterai tidak akan pernah otomatis diaktifkan.
  • Penggantian manual: Jika aplikasi mengaktifkan Penghemat Baterai dan Anda mengganti Penghemat Baterai secara manual untuk menonaktifkannya (menggunakan Setelan Cepat, Setelan, atau metode lainnya), Penghemat Baterai akan tetap nonaktif hingga Anda mengaktifkannya kembali secara manual atau mencolokkan perangkat.