Unterstützung akkuloser Geräte

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

Ist eine Batterie vorhanden?

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

```
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 Ihr Produkt erkennt, gehen Sie so vor: akkubezogene Standardwerte werden 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 Erzwungen auf wahr

Hersteller können die Standardeinstellungen mit einem Kernel ändern Stromversorgung oder Health HAL.

Android 9 und höher

Bei Android 9 wird Code für ein akkubetriebenes Gerät entfernt die standardmäßig eine Batterie vorgetäuscht haben, werden 100 % erreicht und mit normalem Temperaturmesswert Thermistor.

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 auf der Benutzeroberfläche das Akkusymbol erscheint, mit einem Ausrufezeichen und der Akkustand als 0%. Das Gerät wird jedoch aufgrund eines niedrigen Akkustands und von Aufträgen, die einen bestimmten oder ein guter Akkuladestand eingestellt ist.

Android 8.1 und niedriger

Da der Akkustatus unbekannt ist, berücksichtigen die Android-Framework-APIs das System auflädt (oder nicht mit Akku betrieben wird) und eine niedrige Batterieleistung. Wenn die Benutzeroberfläche den Akku wird es mit einem Ausrufezeichen angezeigt und der Akkustand beträgt in Prozent als 0 % angezeigt. Das Gerät wird jedoch aufgrund eines niedrigen Akkustands und von Jobs, die muss aufgeladen werden oder ein guter Akkuladestand eingestellt sein.

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 Android 9 und höher kein Linux-Netzteil erkennt Kurs wird bei allen Ladegeräten (AC, USB, kabellos) standardmäßig Status offline. Wenn alle Ladegeräte offline sind, aber kein Akku vorhanden ist erkannt wird, gilt das System trotzdem in dem Sinne, dass Es wird wie oben beschrieben extern und nicht über den Akku betrieben.

Wenn Ihr Produkt keinen Akku hat und immer an eine Stromquelle angeschlossen ist ist es am besten, den Linux-Kernel-Dienst „power_supply“ charger zu implementieren. Treiber für die Stromquelle, der das Attribut online sysfs festlegt an true. Oder du kannst das Netzteil online in einem Health-HAL konfigurieren für dein Gerät. 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.