Na tej stronie dowiesz się, jak Android radzi sobie z produktami, które mają wymienne lub pozbawione baterii wewnętrznych. Urządzenia te są podłączone do zewnętrznego źródła zasilania, np. do gniazdka elektrycznego lub portu USB w innym urządzeniu.
Czy bateria jest naładowana?
Aplikacje mogą używać tego kodu, aby wykryć, czy urządzenie jest zasilane bateriami:
```
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, zostaną użyte poniższe wartości domyślne związane z baterią. W Androidzie 9 zmieniły się domyślne ustawienia. Ta tabela przedstawia różnice.
Stan baterii | Android 9 lub nowszy | Android 8.1 lub starszy |
---|---|---|
Prezentuj | fałsz | true |
Stan | Nieznany | ładowanie |
Pozostała pojemność | 0 | 100% |
Samo | Nieznany | dobrze |
Stan online ładowarki AC | nie zmodyfikowano | wymuszone na prawda |
Producenci mogą zmieniać ustawienia domyślne za pomocą sterownika power_supply jądra lub Health HAL.
Android 9 lub nowszy
Android 9 usuwa poprzedni kod z urządzeń bez baterii, które domyślnie udawały, że bateria jest rozładowana, że była ładowana w 100% i miała dosyć dobry odczyt temperatury na termostacie.
Większość interfejsów API platformy, które korzystają z tych informacji, obsługuje typowe sytuacje tak samo jak wcześniej: system jest uznawany za ładowanie (czyli nie działa z baterii) i nie niski poziom baterii. Jeśli w interfejsie pojawi się ikona baterii, pojawi się wykrzyknik, a poziom baterii będzie wynosić 0%. Urządzenie nie wyłączy się jednak z powodu słabej baterii, a zaplanowane zadania wymagają naładowania baterii lub jej dobrej baterii.
Android 8.1 lub starszy
Stan baterii jest nieznany, dlatego interfejsy API platformy Android będą uznawać, że system się ładuje (lub nie działa na baterii) i nie będą uważane za niski poziom baterii. Jeśli interfejs wyrenderuje ikonę baterii, pojawi się przy niej wykrzyknik, a poziom naładowania baterii będzie oznaczony 0%. Urządzenie nie wyłączy się jednak z powodu słabej baterii oraz ma zaplanowane zadania, które wymagają ładowania lub dobrej baterii.
Implementacja
Domyślny kod Androida 9 może działać prawidłowo na Twoim urządzeniu, ale zalecamy zmianę jądra lub HAL, aby dokładnie odzwierciedlały stan zasilania i baterii produktu, jak opisano wcześniej. Jeśli Android 9 i nowsze wersje nie wykryje ładowarki klasy zasilania z systemem Linux, domyślnie wszystkie ładowarki (AC, USB, bezprzewodowe) mają stan offline. Jeśli wszystkie ładowarki są offline, ale nie wykryto żadnego urządzenia z baterią, system wciąż uznaje się za ładowany w tym sensie, że 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 źródła zasilania, najlepiej zastosować sterownik ładowarki klasy charger systemu Linux dla źródła zasilania prądu przemiennego lub USB, który ustawia wartość atrybutu online sysfs
na true
. Możesz też skonfigurować właściwość online ładowarki sieciowej
w Health HAL dla swojego urządzenia. Aby skonfigurować właściwość online ładowarki do ładowarki na poziomie Health AI, zobacz artykuł Health AIDL HAL.
Ta niestandardowa HAL implementuje niestandardową wersję Health::getHealthInfo()
, która zmienia wartość BatteryProperties.chargerAcOnline = true
.
Najpierw skopiuj plik hardware/interfaces/health/aidl/default/Health.cpp
do własnej implementacji Health AI HAL i zmodyfikuj go zgodnie z
Health AIDL HAL.