Unterstützung für akkulose Geräte

Auf dieser Seite wird beschrieben, wie Android mit Produkten umgeht, die entweder Batterien oder keine internen Batterien. 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. 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 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, verarbeiten weiterhin gängige Situationen wie zuvor: Das System wird als charge (d. h. nicht im Akkubetrieb) und werden nicht berücksichtigt. dass die Batterie schwach ist. 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 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 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.

Dieser benutzerdefinierte Health-HAL implementiert eine benutzerdefinierte Version von Health::getHealthInfo() mit dem der Wert von BatteryProperties.chargerAcOnline = true geändert wird.

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.