Na tej stronie opisano, jak Android obsługuje produkty z wymiennymi bateriami lub bez wewnętrznych baterii. 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 Twojego urządzenia, zostaną użyte te wartości domyślne dotyczące baterii. 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 |
---|---|---|
Prezentowanie | 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 power_supply lub interfejsu 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 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ę 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ądzeniu, ale zalecamy wprowadzenie zmian w jądrze lub interfejsie HAL, aby dokładnie odzwierciedlały stan zasilania i baterii Twojego produktu, jak opisano 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 źródła zasilania, najlepiej zaimplementować sterownik klasy charger jądra Linux power_supply dla źródła zasilania AC lub USB, który ustawia atrybut online sysfs
na 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.
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łasnego wdrożenia Health HAL i zmodyfikuj go zgodnie z informacjami w Health 2.0
README.