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 einen USB-Port eines anderen Geräts.

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. Beachten Sie, dass sich die Standardeinstellungen in der Android 9 wird veröffentlicht. Diese Tabelle zeigt die Unterschiede.

Akkustatus Android 9 und 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 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 hat und bei normaler Temperaturmessung 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 angezeigt und der Akkustand als 0%. 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, berücksichtigen die Android-Framework-APIs das System auflädt (oder nicht mit Akku betrieben wird) und eine niedrige Batterieleistung. 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 möglicherweise Gerät. Es wird jedoch empfohlen, entweder einen Kernel oder eine HAL-Änderung die Angaben zur Leistung und zum Akkuzustand Ihres Produkts, wie beschrieben, oben. 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 Quelle 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 einen Health HAL wie unter Implementierung von Gesundheit 2.0.

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

Kopiere die Datei, um zu beginnen hardware/interfaces/health/2.0/default/Health.cpp an Ihre eigene Health HAL-Implementierung anpassen und sie gemäß der Health 2.0-Implementierung README-Datei.