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.