Unterstützung für akkulose Geräte

Auf dieser Seite wird beschrieben, wie Android mit Produkten umgeht, die entweder austauschbare Batterien oder keine internen Akkus enthalten. Letztere Geräte werden stattdessen an eine externe Stromquelle angeschlossen, z. B. an eine Steckdose oder einen USB-Port eines anderen Geräts.

Ist eine Batterie vorhanden?

Mit dem folgenden Code können Anwendungen prüfen, ob sich ein Akku im Gerät befindet:

```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));

return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```

Verhalten von batterielosen Geräten

Wenn Android kein Akkugerät für Ihr Produkt erkennt, werden die folgenden akkubezogenen Standardwerte verwendet. Hinweis: Die Standardeinstellungen haben sich in der Android 9-Version geändert. In dieser Tabelle sind die Unterschiede aufgeführt.

Akkustatus Android 9 oder höher Android 8.1 und niedriger
Präsentieren false wahr
Status unbekannt wird geladen
Verbleibende Kapazität 0 100 %
Gesundheit unbekannt good
Onlinestatus des Netzteils nicht geändert auf „true“ festgelegt

Hersteller können die Standardeinstellungen mit einem Kernel-Treiber power_supply oder Health HAL ändern.

Android 9 oder höher

In Android 9 wurde der Code für akkulose Geräte entfernt, der standardmäßig vorgab, dass ein Akku vorhanden ist, zu 100 % geladen wird und sich in einem guten Zustand befindet, wobei die Temperatur am Thermistor normal ist.

Die meisten Framework-APIs, die mit diesen Informationen umgehen, behandeln gängige Situationen weiterhin wie bisher: Das System wird als in Aufladung betrachtet (d. h. es wird nicht mit Akku betrieben) und es wird nicht als „niedriger Akkustand“ eingestuft. Wenn das Akkusymbol auf der Benutzeroberfläche angezeigt wird, wird es mit einem Ausrufezeichen und einem Akkustand von 0 % angezeigt. Das Gerät wird jedoch nicht aufgrund eines niedrigen Akkustands heruntergefahren und Aufgaben, die ein Aufladen oder einen guten Akku erfordern, werden geplant.

Android 8.1 und niedriger

Da der Akkustatus unbekannt ist, gehen die Android-Framework-APIs davon aus, dass das System auflädt (oder nicht mit Akku betrieben wird) und nicht als schwacher Akku gewertet wird. Wenn das Akkusymbol auf der Benutzeroberfläche angezeigt wird, wird es mit einem Ausrufezeichen und einem Akkustand von 0 % dargestellt. Das Gerät wird jedoch nicht aufgrund eines niedrigen Akkustands heruntergefahren und Aufgaben, die ein Aufladen oder einen ausreichenden Akkustand erfordern, werden geplant.

Implementierung

Der Standardcode von Android 9 funktioniert möglicherweise ordnungsgemäß auf Ihrem Gerät. Es wird jedoch empfohlen, entweder eine Kernel- oder eine HAL-Änderung vorzunehmen, um den Akkustand und den Akkustatus Ihres Produkts wie oben beschrieben korrekt widerzuspiegeln. Wenn unter Android 9 und höher kein Ladegerät der Linux-Netzteilklasse erkannt wird, haben alle Ladegeräte standardmäßig den Status Offline. Wenn alle Ladegeräte offline sind, aber kein Akkugerät erkannt wird, wird das System weiterhin als geladen betrachtet, da es wie bereits beschrieben mit externem Strom und nicht mit Akkustrom betrieben wird.

Wenn Ihr Produkt keinen Akku hat und immer an eine Stromquelle angeschlossen ist, sollten Sie für die Wechselstrom- oder USB-Stromquelle einen Linux-Kernel-Treiber der Klasse „power_supply“ vom Typ charger implementieren, der das Attribut online sysfs auf true festlegt. Alternativ können Sie die Onlineeigenschaft des Netzteils in einer Health HAL für Ihr Gerät konfigurieren. Implementieren Sie dazu eine Health HAL wie unter Health 2.0 implementieren beschrieben.

Diese benutzerdefinierte Health HAL implementiert eine benutzerdefinierte Version von Health::getHealthInfo(), die den Wert von BatteryProperties.chargerAcOnline = true ändert.

Kopieren Sie zuerst die Datei hardware/interfaces/health/2.0/default/Health.cpp in Ihre eigene Health HAL-Implementierung und ändern Sie sie gemäß der Health 2.0-README.