Na tej stronie opisano, jak system Android obsługuje produkty wyposażone w baterie wymienne lub nie posiadające baterii wewnętrznych. Te ostatnie urządzenia są zamiast tego podłączane do zewnętrznego źródła zasilania, takiego jak gniazdko elektryczne lub port USB w innym urządzeniu.
Czy jest akumulator?
Następujący kod może zostać wykorzystany przez aplikacje do wykrycia, czy w urządzeniu znajduje się bateria:
```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));
return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```
Zachowanie urządzenia bez baterii
Jeśli system Android nie wykryje urządzenia akumulatorowego dla Twojego produktu, zostaną użyte następujące wartości domyślne związane z baterią. Uwaga: ustawienia domyślne uległy zmianie w wersji Androida 9. Ta tabela pokazuje różnice.
Stan baterii | Android 9 i nowsze | Android 8.1 i starsze |
---|---|---|
Obecny | FAŁSZ | PRAWDA |
Status | nieznany | ładowanie |
Pozostała pojemność | 0 | 100% |
Zdrowie | nieznany | Dobry |
Stan ładowarki sieciowej online | niezmodyfikowany | zmuszony do prawdy |
Producenci mogą zmieniać ustawienia domyślne za pomocą sterownika zasilania jądra lub HAL Health .
Android 9 i nowszy
Android 9 usuwa część poprzedniego kodu urządzeń bez baterii, które domyślnie udawały, że bateria jest obecna, były ładowane w 100% i były w dobrym stanie z normalnym odczytem temperatury na termistorze.
Większość interfejsów API platformy obsługujących te informacje w dalszym ciągu radzi sobie z typowymi sytuacjami w taki sam sposób jak poprzednio: uważa się, że system się ładuje (to znaczy nie działa na zasilaniu bateryjnym) i nie będzie uznawany za mający niski poziom naładowania baterii. Jeśli w interfejsie użytkownika pojawi się ikona baterii, pojawi się ona z wykrzyknikiem, a procent baterii będzie pokazywany jako 0%. Jednak urządzenie nie wyłączy się z powodu niskiego poziomu naładowania baterii i zaplanowane zostaną zadania wymagające ładowania lub dobrej baterii.
Android 8.1 i starsze
Ponieważ stan baterii jest nieznany, interfejsy API platformy Android uznają, że system się ładuje (lub nie działa na zasilaniu bateryjnym) i nie będą uznawane za mające słabą baterię. Jeśli interfejs użytkownika wyświetla ikonę baterii, pojawi się ona z wykrzyknikiem, a procent baterii będzie pokazywany jako 0%. Jednak urządzenie nie wyłączy się z powodu niskiego poziomu naładowania baterii, a zadania wymagające ładowania lub dobrej baterii zostaną zaplanowane.
Realizacja
Domyślny kod systemu Android 9 może działać poprawnie na Twoim urządzeniu, ale zaleca się dokonanie zmiany w jądrze lub warstwie HAL, aby dokładnie odzwierciedlać stan zasilania i baterii produktu, jak opisano powyżej. Jeśli system Android 9 i nowszy nie wykryje ładowarki klasy zasilania Linux , domyślnie wszystkie typy ładowarek (AC, USB, bezprzewodowe) będą miały status offline . Jeśli wszystkie ładowarki są w trybie offline, ale nie wykryto żadnego urządzenia akumulatorowego, system nadal będzie uważany za ładujący w tym sensie, że działa na zasilaniu zewnętrznym, a nie akumulatorowym, jak opisano wcześniej.
Jeśli Twój produkt nie ma baterii i jest zawsze podłączony do źródła zasilania, najlepiej zaimplementować sterownik ładowarki klasy power_supply jądra Linux dla źródła zasilania AC lub USB, który ustawia jego atrybut online sysfs
na true
. Możesz też skonfigurować usługę online ładowarki AC w Health HAL dla swojego urządzenia. Aby to zrobić, zaimplementuj Health HAL zgodnie z opisem w Implementing Health 2.0 .
Ta niestandardowa warstwa Health HAL 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łasnej implementacji Health HAL i zmodyfikuj go zgodnie z plikiem README Health 2.0 .