Unterstützung für akkulose Geräte

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

Ist eine Batterie vorhanden?

Der folgende Code kann von Anwendungen verwendet werden, um zu erkennen, ob das Gerät einen Akku hat:

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

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

Verhalten bei akkubetriebenen 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 AC-Ladegeräts Nicht geändert auf „true“ festgelegt

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

Android 9 oder höher

Android 9 entfernt einige frühere Codes für batterielose Geräte, die standardmäßig eine Batterie vorgetäuscht haben, bei 100 % geladen wurden und bei normalem Temperaturmesswert des Thermostats bei normalem Zustand waren.

Die meisten Framework-APIs, die mit diesen Informationen umgehen, bewältigen gängige Situationen wie bisher: Das System wird aufgeladen, d. h. nicht im Akkubetrieb betrieben, und nicht als ein schwacher Akku. Wenn auf der Benutzeroberfläche das Akkusymbol erscheint, wird ein Ausrufezeichen angezeigt und der Akkustand als 0 % angegeben. 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 nicht bekannt ist, wird das System von den Android-Framework-APIs als in Ladung (oder nicht mit Akku betrieben) betrachtet und nicht als Gerät mit schwachem Akku. 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 Android 9-Standardcode funktioniert auf Ihrem Gerät möglicherweise ordnungsgemäß. Es wird jedoch empfohlen, entweder eine Kernel- oder HAL-Änderung vorzunehmen, um den Akkuzustand des Produkts wie oben beschrieben genau wiederzugeben. 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 den Linux-Kernel-Treiber charger der Klasse „power_supply“ implementieren, der das Attribut online sysfs auf true setzt. Alternativ kannst du die Onlineeigenschaft für das Netzteil in einem Health-HAL für dein Gerät konfigurieren. Implementieren Sie dazu ein Health-HAL, wie unter Health 2.0 implementieren beschrieben.

Dieser 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.