Bataryasız Cihazları Destekleme

Bu sayfada, Android'in çıkarılabilir pilleri olan veya dahili pilleri olmayan ürünleri nasıl işlediği açıklanmaktadır. İkinci cihazlar bunun yerine başka bir cihazdaki AC güç çıkışı veya USB bağlantı noktası gibi harici bir güç kaynağına bağlanır.

Pil mevcut mu?

Aşağıdaki kod, uygulamalar tarafından cihazda mevcut bir batarya olup olmadığını tespit etmek için kullanılabilir:

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

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

Bataryasız 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ılanların değiştiğini unutmayın. Bu tablo farklılıkları göstermektedir.

Pil durumu Android 9 ve üstü Android 8.1 ve önceki sürümler
Mevcut yanlış doğru
Durum Bilinmeyen Doluyor
Kalan kapasite 0 100%
Sağlık Bilinmeyen iyi
AC şarj cihazı çevrimiçi durumu modifiye edilmemiş gerçeğe zorlamak

Üreticiler, bir kernel power_supply sürücüsü veya Health HAL kullanarak varsayılan ayarları değiştirebilirler.

Android 9 ve üstü

Android 9, varsayılan olarak bir pilin varmış gibi görünen,% 100 oranında şarj edildiği ve termistöründe normal bir sıcaklık okumasıyla sağlıklı durumda olan pilsiz cihazlar için önceki bazı kodları kaldırır.

Bu bilgilerle ilgilenen çoğu çerçeve API'si, daha önce olduğu gibi yaygın durumları ele almaya devam eder: sistemin şarj olduğu (yani, pil gücüyle çalışmadığı) kabul edilecek ve düşük pil olduğu düşünülmeyecektir. Kullanıcı arabirimi pil simgesini çizerse, bir ünlem işaretiyle görünecek ve pil yüzdesi% 0 olarak gösterilecektir. Ancak düşük pil nedeniyle cihaz kapanmayacaktır ve şarj veya iyi pil gerektiren işler planlanacaktır.

Android 8.1 ve önceki sürümler

Pil durumu bilinmediğinden, Android çerçeve API'leri sistemin şarj olduğunu (veya pil gücüyle çalışmadığını) değerlendirecek ve pilinin zayıf olduğu düşünülmeyecektir. Kullanıcı arayüzü pil simgesini gösterirse, bir ünlem işaretiyle görünecek ve pil yüzdesi% 0 olarak gösterilecektir. Ancak düşük pil nedeniyle cihaz kapanmayacaktır ve şarj veya iyi pil gerektiren işler planlanacaktır.

Uygulama

Android 9 varsayılan kodu cihazınız için düzgün çalışabilir, ancak yukarıda açıklandığı gibi ürününüzün güç ve pil durumunu doğru bir şekilde yansıtmak için bir çekirdek veya HAL değişikliği yapmanız önerilir. Android 9 ve üstü bir Linux güç kaynağı sınıfı şarj cihazı algılamazsa, varsayılan olarak tüm şarj cihazı türleri (AC, USB, Kablosuz) çevrimdışı duruma sahip olacaktır. Tüm şarj cihazları çevrimdışıysa ancak algılanan bir pil cihazı yoksa, sistem daha önce açıklandığı gibi pil gücüyle değil, harici olarak çalıştığı için yine de şarj ediliyor olarak kabul edilecektir.

Ürününüzün pili yoksa ve her zaman bir güç kaynağına bağlıysa, AC veya USB güç kaynağı için çevrimiçi sysfs özelliğini true ayarlayan bir Linux kernel power_supply sınıfı şarj cihazı sürücüsü uygulamak en iyisidir. Veya AC şarj cihazının çevrimiçi özelliğini cihazınız için bir Sağlık HAL'sinde yapılandırabilirsiniz. Bunu yapmak için, Uygulama Sağlık 2.0'da açıklandığı gibi bir Sağlık HAL'si uygulayın .

Bu özel Health HAL, BatteryProperties.chargerAcOnline = true değerini değiştiren özel bir Health::getHealthInfo() sürümü uygular.

Başlamak için, hardware/interfaces/health/2.0/default/Health.cpp dosyasını kendi Sağlık HAL uygulamanıza kopyalayın ve Sağlık 2.0 BENİOKU'ya göre değiştirin.