Xamarin.Essentials: Akku
Mit der Battery-Klasse können Sie Informationen über den Akkustand und über Änderungen des Geräts sowie den Energiesparstatus des Geräts überwachen. Dieser gibt an, ob sich das Gerät im Energiesparmodus befindet. Anwendungen sollten Hintergrundverarbeitung vermeiden, wenn der Energiesparmodus des Geräts aktiviert ist.
Lesen Sie zum Einstieg in die Verwendung dieser API den Leitfaden mit ersten Schritte für Xamarin.Essentials, um sicherzustellen, dass die Bibliothek ordnungsgemäß installiert und in Ihren Projekten eingerichtet ist.
Für den Zugriff auf die Akku-Funktion ist die folgende plattformspezifische Einrichtung erforderlich.
Die Berechtigung Battery
ist obligatorisch und muss im Android-Projekt konfiguriert werden. Das Hinzufügen erfolgt folgendermaßen:
Öffnen Sie die Datei AssemblyInfo.cs im Ordner Eigenschaften und fügen Sie Folgendes hinzu:
[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]
Alternativ können Sie das Android-Manifest aktualisieren:
Öffnen Sie die Datei AndroidManifest.xml im Ordner Eigenschaften, und fügen Sie Folgendes im Knoten Manifest hinzu.
<uses-permission android:name="android.permission.BATTERY_STATS" />
Alternativ können Sie mit der rechten Maustaste auf das Android-Projekt klicken und die Eigenschaften des Projekts öffnen. Suchen Sie unter Android-Manifest den Bereich Erforderliche Berechtigungen: , und aktivieren Sie die Berechtigung Battery (Akku). Dadurch wird die Datei AndroidManifest.xml automatisch aktualisiert.
Fügen Sie in Ihrer Klasse einen Verweis auf Xamarin.Essentials hinzu:
using Xamarin.Essentials;
Überprüfen der aktuellen Akkuinformationen:
var level = Battery.ChargeLevel; // returns 0.0 to 1.0 or 1.0 when on AC or no battery.
var state = Battery.State;
switch (state)
{
case BatteryState.Charging:
// Currently charging
break;
case BatteryState.Full:
// Battery is full
break;
case BatteryState.Discharging:
case BatteryState.NotCharging:
// Currently discharging battery or not being charged
break;
case BatteryState.NotPresent:
// Battery doesn't exist in device (desktop computer)
break;
case BatteryState.Unknown:
// Unable to detect battery state
break;
}
var source = Battery.PowerSource;
switch (source)
{
case BatteryPowerSource.Battery:
// Being powered by the battery
break;
case BatteryPowerSource.AC:
// Being powered by A/C unit
break;
case BatteryPowerSource.Usb:
// Being powered by USB cable
break;
case BatteryPowerSource.Wireless:
// Powered via wireless charging
break;
case BatteryPowerSource.Unknown:
// Unable to detect power source
break;
}
Jedes Mal, wenn sich die Eigenschaften des Akkus ändern, wird ein Ereignis ausgelöst:
public class BatteryTest
{
public BatteryTest()
{
// Register for battery changes, be sure to unsubscribe when needed
Battery.BatteryInfoChanged += Battery_BatteryInfoChanged;
}
void Battery_BatteryInfoChanged(object sender, BatteryInfoChangedEventArgs e)
{
var level = e.ChargeLevel;
var state = e.State;
var source = e.PowerSource;
Console.WriteLine($"Reading: Level: {level}, State: {state}, Source: {source}");
}
}
Für Geräte, die mit Akku betrieben werden, lässt sich der Energiesparmodus aktivieren. Manchmal werden Geräte automatisch in diesen Modus umgeschaltet, z.B. wenn der Akku unter 20 % fällt. Das Betriebssystem reagiert auf den Energiesparmodus, indem Aktivitäten reduziert werden, die den Akku stark beanspruchen. Anwendungen können unterstützend wirken, indem sie Hintergrundverarbeitung oder andere Hochleistungsaktivitäten im Energiesparmodus vermeiden.
Sie können auch den aktuellen Energiesparstatus des Geräts über die statische Eigenschaft Battery.EnergySaverStatus
ermitteln:
// Get energy saver status
var status = Battery.EnergySaverStatus;
Diese Eigenschaft gibt ein Mitglied der EnergySaverStatus
-Enumeration zurück: On
, Off
oder Unknown
. Wenn die Eigenschaft On
zurückgibt, sollte die Anwendung Hintergrundverarbeitung oder andere Aktivitäten vermeiden, die ggf. viel Energie verbrauchen.
Außerdem sollte die Anwendung einen Ereignishandler installieren. Die Battery-Klasse zeigt ein Ereignis an, das ausgelöst wird, wenn sich der Energiesparstatus ändert:
public class EnergySaverTest
{
public EnergySaverTest()
{
// Subscribe to changes of energy-saver status
Battery.EnergySaverStatusChanged += OnEnergySaverStatusChanged;
}
private void OnEnergySaverStatusChanged(EnergySaverStatusChangedEventArgs e)
{
// Process change
var status = e.EnergySaverStatus;
}
}
Wenn sich der Energiesparstatus auf On
ändert, sollte die Anwendung die Hintergrundverarbeitung deaktivieren. Wenn der Status auf Unknown
oder Off
wechselt, kann die Anwendung die Hintergrundverarbeitung wieder aufnehmen.
Auf Channel 9 und auf YouTube finden Sie weitere Videos zu Xamarin.