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
Bagian ini menjelaskan cara mengonfigurasi perangkat Anda untuk opsi Berdasarkan rutinitas.
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, tetapkan nilai konfigurasi ini:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
Untuk memverifikasi, buat image Anda, flash ke perangkat, dan buka Setelan
Baterai > Penghemat Baterai > Jadwal Penghemat Baterai. Opsi Berdasarkan rutin akan muncul.
Nilai minimum nonaktif default
Kolom config_dynamicPowerSavingsDefaultDisableThreshold menentukan tingkat 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 Anda 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 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 di image sistem, aplikasi tidak dapat memperoleh izin atau memanggil API dengan berhasil. Sistem tidak memberikan masukan di luar error izin standar, jadi penting untuk memverifikasi bahwa aplikasi 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. Berikan izin
android.permission.POWER_SAVER hanya kepada 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 rutinitas Penghemat Baterai
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 yang 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 berhasil dipanggil, 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 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 OEM menentukan perilaku yang memicu mode Penghemat Baterai Berdasarkan rutinitas. OEM harus menguji integrasinya untuk memverifikasi bahwa perilaku tersebut memenuhi ekspektasi. Secara khusus, pastikan perangkat dapat melakukan tugas berikut:
- Berdasarkan persentase: Jika Anda memilih Berdasarkan persentase di UI Jadwal Penghemat Baterai dan memilih 15%, Penghemat Baterai akan aktif secara otomatis 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 ambang batas yang ditunjukkan dan dicabut dari sumber listrik. - Tidak ada: Jika Anda memilih Tidak ada di UI Jadwal Penghemat Baterai, Penghemat Baterai tidak pernah diaktifkan secara otomatis.
- Penggantian manual: Jika aplikasi mengaktifkan Penghemat Baterai dan Anda mengganti Penghemat Baterai secara manual untuk menonaktifkannya (menggunakan Setelan Cepat, Setelan, atau metode lain), Penghemat Baterai akan tetap nonaktif hingga Anda mengaktifkannya kembali secara manual atau mencolokkan perangkat.