Obsługa urządzeń bez baterii

Na tej stronie opisujemy, jak Android obsługuje produkty, które można zdjąć baterii lub baterii wewnętrznych. Urządzenia te są natomiast połączone z zewnętrzne źródło zasilania, takie jak gniazdko elektryczne lub port USB w innym miejscu. urządzenia.

Czy bateria jest naładowana?

Aplikacje mogą korzystać z tego kodu, aby wykryć, czy urządzenie bateria:

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

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

Działanie urządzenia bez baterii

Jeśli Android nie wykryje baterii do Twojego produktu, wykonaj następujące czynności: używane są wartości domyślne związane z bateriami. Zwróć uwagę, że ustawienia domyślne zostały zmienione Wersja Android 9. Ta tabela przedstawia różnice.

Stan baterii Android 9 lub nowszy Android 8.1 lub starszy
Prezentuj fałsz prawda
Stan brak informacji ładowanie
Pozostała pojemność 0 100%
Samo brak informacji dobrze
Stan online ładowarki AC nie zmodyfikowano wymuszone na prawda

Producenci mogą zmieniać ustawienia domyślne za pomocą jądra systemu. zasilanie_zasobów kierowcy lub Health HAL.

Android 9 lub nowszy

Android 9 usuwa poprzedni kod dotyczący braku baterii urządzeń, które domyślnie sugerowały, że jest dostępna bateria, i zostały ładowane 100%, a jego stan był dobry, a odczyt temperatury był prawidłowy termistora.

Większość interfejsów API platformy, które korzystają z tych informacji, nadal obsługuje typowe takie same jak poprzednio: system jest uznawany za ładowanie (czyli brak zasilania z baterii) i nie będzie brane pod uwagę słaba bateria. Jeśli interfejs wyświetla ikonę baterii, z wykrzyknikiem, a procent baterii – 0%. Urządzenie nie wyłączy się jednak z powodu słabej baterii i zadań, które wymagają ładowania lub dobrej baterii.

Android 8.1 lub starszy

Stan baterii jest nieznany, dlatego interfejsy API platformy Android będą system, który się ładuje (lub nie jest zasilany z baterii) i nie będzie uważa się, że bateria jest słaba. Jeśli interfejs renderuje baterię pojawi się wykrzyknik, a poziom naładowania baterii będzie wynosić jako 0%. Urządzenie nie wyłączy się jednak z powodu słabej baterii i zadań, które wymagają ładowania lub dobrej baterii.

Implementacja

Domyślny kod Androida 9 może działać prawidłowo na Twoim urządzenia, ale zaleca się zmianę jądra lub kodu HAL dokładnie odzwierciedla stan zasilania i baterii produktu, zgodnie z opisem powyżej. Jeśli Android 9 i nowsze wersje nie wykrywają zasilacza z Linuksem zajęcia ładowarką. Domyślnie wszystkie ładowarki (AC, USB, bezprzewodowe) będą stan offline. Jeśli wszystkie ładowarki są offline, ale nie ma baterii system zostanie uznany za ładowany w tym sensie, działa z zewnątrz, a nie z baterii, jak opisano wcześniej.

Jeśli produkt nie ma baterii i jest zawsze podłączony do zasilania źródła, najlepiej zastosować ładowarkę klasy power_supply jądra systemu Linux sterownik źródła zasilania AC lub USB, które ustawia atrybut online sysfs do true. Możesz też skonfigurować właściwość online ładowarki sieciowej w Health HAL dla Twojego urządzenia. W tym celu należy wdrożyć HAL Health, zgodnie z opisem w sekcji Implementowanie Zdrowie 2.0

Ta niestandardowa HAL implementuje niestandardową wersję Health::getHealthInfo() modyfikujące wartość BatteryProperties.chargerAcOnline = true.

Aby rozpocząć, skopiuj plik hardware/interfaces/health/2.0/default/Health.cpp do własnej implementacji Health HAL i zmodyfikuj ją zgodnie z Health 2.0 README.