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.