Obsługa urządzeń bez baterii

Na tej stronie opisano, jak Android obsługuje produkty z wymiennymi bateriami lub bez wewnętrznych baterii. Te ostatnie są podłączone do zewnętrznego źródła zasilania, takiego jak gniazdko sieciowe lub port USB na innym urządzeniu.

Czy jest bateria?

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. Pamiętaj, że domyślne wartości zostały zmienione w wersji Androida 9. Ta tabela pokazuje 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 sieciowej nie zmodyfikowano wymuszone na wartość „prawda”

Producenci mogą zmieniać ustawienia domyślne za pomocą jądra power_supply lub interfejsu Health HAL.

Android 9 lub nowszy

Android 9 usuwa część wcześniejszego kodu z urządzeń bez baterii, które domyślnie udawały, że bateria jest obecna, jest ładowana w 100% i jest w dobrym stanie, a jej termistor ma normalną temperaturę.

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 ikona baterii jest wyświetlana w interfejsie, będzie zawierać wykrzyknik, a poziom naładowania baterii będzie wynosił 0%. Urządzenie nie wyłączy się z powodu słabej baterii, a zadania wymagające naładowania lub dobrej baterii są zaplanowane.

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ę z powodu słabej baterii, a zadania wymagające ładowania lub dobrej baterii są zaplanowane.

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 lub nowszy nie wykryje urządzenia ładowarki Linux power supply class, domyślnie wszystkie typy ładowarek (AC, USB, bezprzewodowa) będą miały stan offline. Jeśli wszystkie ładowarki są offline, ale nie wykryto urządzenia z baterią, system będzie nadal uważany za ładujący się w tym sensie, że działa na zasilaniu zewnętrznym, a nie na baterii, jak opisano wcześniej.

Jeśli produkt nie ma baterii i jest zawsze podłączony do zasilania źródła, najlepiej wdrożyć ł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. Aby to zrobić, zaimplementuj interfejs Health HAL zgodnie z opisem w artykule Wdrażanie Health 2.0.

Ten niestandardowy interfejs HAL Health implementuje niestandardową wersję Health::getHealthInfo(), która modyfikuje wartość BatteryProperties.chargerAcOnline = true.

Aby rozpocząć, skopiuj plik hardware/interfaces/health/2.0/default/Health.cpp do własnego wdrożenia interfejsu Health HAL i zmodyfikuj go zgodnie z plikiem Health 2.0 README.