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 einen USB-Port eines anderen Geräts.
Ist eine Batterie vorhanden?
Mit dem folgenden Code können Apps 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 des Geräts ohne Akku
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 | true |
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 vortäuschte, dass ein Akku vorhanden, zu 100 % geladen und in gutem Zustand mit einer normalen Temperaturmessung am Thermistor war.
Die meisten Framework-APIs, die mit diesen Informationen umgehen, behandeln gängige Situationen weiterhin wie bisher: Das System wird als in Ladung 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 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 Standardcode von Android 9 funktioniert möglicherweise ordnungsgemäß für Ihr 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ätetypen (Wechselstrom, USB, kabellos) 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.