Bu sayfada, Android'in çıkarılabilir pili olan veya dahili pili olmayan ürünleri nasıl işlediği açıklanmaktadır. Bu cihazlar, AC güç prizi veya başka bir cihazdaki USB bağlantı noktası gibi harici bir güç kaynağına bağlanır.
Pil var mı?
Aşağıdaki kod, cihazda pil olup olmadığını algılamak için uygulamalar tarafından kullanılabilir:
```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));
return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```
Pilsiz cihaz davranışı
Android, ürününüz için bir pil cihazı algılamazsa pille ilgili aşağıdaki varsayılan değerler kullanılır. Android 9 sürümünde varsayılan ayarların değiştiğini unutmayın. Farklılıkları bu tabloda görebilirsiniz.
Pil durumu | Android 9 ve sonraki sürümler | Android 8.1 ve önceki sürümler |
---|---|---|
Göster | yanlış | doğru |
Durum | Bilinmeyen | şarj oluyor |
Kalan kapasite | 0 | %100 |
Sağlık | Bilinmeyen | iyi |
Prize takılı şarj cihazının çevrimiçi durumu | değiştirilmedi | true değerine zorlama |
Üreticiler, bir çekirdek power_supply sürücüsü veya Health HAL kullanarak varsayılan ayarları değiştirebilir.
Android 9 ve sonraki sürümler
Android 9, varsayılan olarak pil olduğunu, %100 şarj olduğunu ve termistöründe normal bir sıcaklık ölçümü olduğunu iddia eden pilsiz cihazlar için önceki bazı kodları kaldırır.
Bu bilgilerle ilgilenen çoğu çerçeve API'si, yaygın durumları daha önce olduğu gibi işlemeye devam eder: Sistem şarj oluyor (yani pil gücüyle çalışmıyor) olarak kabul edilir ve pilin düşük olduğu kabul edilmez. Kullanıcı arayüzünde pil simgesi çizilirse bu simge ünlem işaretiyle birlikte görünür ve pil yüzdesi %0 olarak gösterilir. Ancak cihaz, pil seviyesi düşük olduğu için kapanmaz ve şarj edilmesi veya iyi bir pil gerektiren işler planlanır.
Android 8.1 ve önceki sürümler
Pil durumu bilinmediği için Android çerçeve API'leri sistemin şarj edildiğini (veya pil gücüyle çalışmadığını) düşünür ve pilin düşük olduğu kabul edilmez. Kullanıcı arayüzünde pil simgesi oluşturuluyorsa ünlem işareti ile birlikte gösterilir ve pil yüzdesi %0 olarak görünür. Ancak cihaz, pil seviyesi düşük olduğu için kapanmaz ve şarj edilmesi veya iyi pil gerektiren işler planlanır.
Uygulama
Android 9 varsayılan kodu cihazınız için düzgün şekilde çalışabilir ancak daha önce açıklandığı gibi, ürününüzün güç ve pil durumunu doğru şekilde yansıtmak için bir çekirdek veya HAL değişikliği yapmanız önerilir. Android 9 ve sonraki sürümler Linux güç kaynağı sınıfı şarj cihazı algılamazsa varsayılan olarak tüm şarj cihazı türleri (AC, USB, kablosuz) çevrimdışı olarak görünür. Tüm şarj cihazları çevrimdışıysa ancak pil cihazı algılanmazsa sistem, daha önce açıklandığı gibi pil gücüyle değil harici güçle çalıştığı için şarj oluyor olarak kabul edilir.
Ürününüzde pil yoksa ve her zaman bir güç kaynağına bağlıysa AC veya USB güç kaynağı için online sysfs
özelliğini true
olarak ayarlayan bir Linux çekirdeği power_supply sınıfı charger sürücüsü uygulamak en iyisidir. Alternatif olarak, cihazınız için Health HAL'de AC şarj cihazı online mülkünü yapılandırabilirsiniz. AC şarj cihazı online mülkünü bir Health HAL'de yapılandırmak için Health AIDL HAL başlıklı makaleyi inceleyin.
Bu özel Health HAL, BatteryProperties.chargerAcOnline = true
değerini değiştiren Health::getHealthInfo()
özel bir sürümünü uygular.
Başlamak için hardware/interfaces/health/aidl/default/Health.cpp
dosyasını kendi Health HAL uygulamanıza kopyalayın ve Health AIDL HAL'e göre değiştirin.