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 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 akkubetriebenes Gerät für dein Produkt erkennt, werden die folgenden akkubezogenen Standardwerte verwendet. Beachten Sie, dass sich die Standardeinstellungen in der Android-Version 9 geändert haben. Diese Tabelle zeigt die Unterschiede.
Akkustatus | Android 9 und höher | Android 8.1 und niedriger |
---|---|---|
Präsentieren | false | true |
Status | unbekannt | wird geladen |
Verbleibende Kapazität | 0 | 100 % |
Gesundheit | unbekannt | good |
Onlinestatus des AC-Ladegeräts | Nicht geändert | Erzwungen auf wahr |
Hersteller können die Standardeinstellungen mit einem power_supply-Kerneltreiber oder Health HAL ändern.
Android 9 und 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 aufgrund des niedrigen Akkustands nicht heruntergefahren und es werden Jobs geplant, die aufgeladen werden müssen oder einen guten Akku aufweisen.
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 die Benutzeroberfläche das Akkusymbol rendert, wird es mit einem Ausrufezeichen angezeigt und der Akkustand wird als 0 % angegeben. Das Gerät wird jedoch aufgrund eines niedrigen Akkustands nicht heruntergefahren und es sind Jobs geplant, die aufgeladen werden müssen oder einen guten Akku aufweisen.
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 zuvor 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 dennoch als geladen angesehen, da es nicht über den Akku betrieben wird, wie oben beschrieben.
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. Informationen zum Konfigurieren der Onlineeigenschaft für das Netzteil in einem Health-HAL finden Sie unter Health AIDL HAL.
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/aidl/default/Health.cpp
in Ihre eigene Health-HAL-Implementierung und ändern Sie sie gemäß Health AIDL HAL.