Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Mendukung Perangkat Tanpa Baterai

Halaman ini menjelaskan cara Android menangani produk yang memiliki baterai yang dapat dilepas atau tidak memiliki baterai internal. Perangkat terakhir malah terhubung ke sumber daya eksternal, seperti stopkontak AC atau port USB pada perangkat lain.

Apakah ada baterai?

Kode berikut dapat digunakan oleh aplikasi untuk mendeteksi apakah perangkat memiliki baterai saat ini:

```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));

return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```

Perilaku perangkat tanpa baterai

Jika Android tidak mendeteksi perangkat baterai untuk produk Anda, maka nilai default terkait baterai berikut akan digunakan. Perhatikan default telah berubah dalam rilis Android 9. Tabel ini menunjukkan perbedaannya.

Status baterai Android 9 dan lebih tinggi Android 8.1 dan lebih rendah
Hadiah Salah benar
Status tidak dikenal pengisian
Kapasitas yang tersisa 0 100%
Kesehatan tidak dikenal bagus
Status pengisi daya AC online tidak dimodifikasi terpaksa benar

Produsen dapat mengubah pengaturan default menggunakan kernel power_supply driver atau Kesehatan HAL .

Android 9 dan lebih tinggi

Android 9 menghapus beberapa kode sebelumnya untuk perangkat tanpa baterai yang secara default berpura-pura ada baterai, sedang diisi daya pada 100%, dan dalam kondisi sehat dengan pembacaan suhu normal pada termistornya.

Kebanyakan kerangka API yang berhubungan dengan informasi ini terus menangani situasi umum yang sama seperti sebelumnya: sistem akan dianggap pengisian (yaitu, tidak berjalan pada daya baterai), dan tidak akan dianggap memiliki baterai rendah. Jika antarmuka pengguna menggambar ikon baterai, itu akan muncul dengan tanda seru, dan persentase baterai akan ditampilkan sebagai 0%. Tetapi perangkat tidak akan mati karena baterai lemah, dan pekerjaan yang memerlukan pengisian daya atau baterai yang baik akan dijadwalkan.

Android 8.1 dan lebih rendah

Karena status baterai tidak diketahui, API kerangka Android akan mempertimbangkan sistem yang akan pengisian (atau, tidak berjalan pada daya baterai) dan tidak akan dianggap memiliki baterai rendah. Jika antarmuka pengguna membuat ikon baterai, itu akan muncul dengan tanda seru, dan persentase baterai akan ditampilkan sebagai 0%. Tetapi perangkat tidak akan mati karena baterai lemah, dan pekerjaan yang memerlukan pengisian daya atau baterai yang baik akan dijadwalkan.

Penerapan

Kode default Android 9 mungkin berfungsi dengan baik untuk perangkat Anda, tetapi disarankan untuk membuat perubahan kernel atau HAL untuk secara akurat mencerminkan status daya dan baterai untuk produk Anda, seperti yang dijelaskan di atas. Jika Android 9 dan yang lebih tinggi tidak mendeteksi power supply kelas Linux perangkat charger, maka secara default semua jenis charger (AC, USB, Wireless) akan memiliki status offline. Jika semua pengisi daya sedang offline tetapi tidak ada perangkat baterai yang terdeteksi, sistem akan tetap dianggap mengisi daya dalam arti berjalan dengan daya eksternal, bukan daya baterai, seperti yang dijelaskan sebelumnya.

Jika produk Anda tidak memiliki baterai dan selalu terhubung ke sumber listrik, yang terbaik untuk menerapkan sopir pengisi kelas power_supply Linux kernel untuk AC atau USB power source yang menetapkan online sysfs atribut true . Atau Anda dapat mengonfigurasi properti online pengisi daya AC di HAL Kesehatan untuk perangkat Anda. Untuk melakukan hal ini menerapkan HAL Kesehatan seperti yang dijelaskan dalam Pelaksana Kesehatan 2.0 .

Kebiasaan ini Kesehatan HAL mengimplementasikan versi kustom Health::getHealthInfo() yang memodifikasi nilai BatteryProperties.chargerAcOnline = true .

Untuk memulai, salin file hardware/interfaces/health/2.0/default/Health.cpp untuk sendiri pelaksanaan Kesehatan HAL Anda dan memodifikasi sesuai dengan Kesehatan 2.0 README .