Xamarin.Essentials: AkkuXamarin.Essentials: Battery

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.The Battery class lets you check the device's battery information and monitor for changes and provides information about the device's energy-saver status, which indicates if the device is running in a low-power mode. Anwendungen sollten Hintergrundverarbeitung vermeiden, wenn der Energiesparmodus des Geräts aktiviert ist.Applications should avoid background processing if the device's energy-saver status is on.

Erste SchritteGet started

Lesen Sie zum Einstieg in diese API das Handbuch Erste Schritte mit Xamarin.Essentials, um sicherzustellen, dass die Bibliothek ordnungsgemäß installiert und in Ihren Projekten eingerichtet ist.To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Für den Zugriff auf die Akku-Funktion ist die folgende plattformspezifische Einrichtung erforderlich.To access the Battery functionality the following platform specific setup is required.

Die Berechtigung Battery ist obligatorisch und muss im Android-Projekt konfiguriert werden.The Battery permission is required and must be configured in the Android project. Das Hinzufügen erfolgt folgendermaßen:This can be added in the following ways:

Öffnen Sie die Datei AssemblyInfo.cs im Ordner Eigenschaften und fügen Sie Folgendes hinzu:Open the AssemblyInfo.cs file under the Properties folder and add:

[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]

Alternativ können Sie das Android-Manifest aktualisieren:OR Update Android Manifest:

Öffnen Sie die Datei AndroidManifest.xml im Ordner Eigenschaften, und fügen Sie Folgendes im Knoten Manifest hinzu.Open the AndroidManifest.xml file under the Properties folder and add the following inside of the manifest node.

<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.Or right click on the Android project and open the project's properties. Suchen Sie unter Android-Manifest den Bereich Erforderliche Berechtigungen: , und aktivieren Sie die Berechtigung Battery (Akku).Under Android Manifest find the Required permissions: area and check the Battery permission. Dadurch wird die Datei AndroidManifest.xml automatisch aktualisiert.This will automatically update the AndroidManifest.xml file.

Verwenden der Akku-FunktionUsing Battery

Fügen Sie Ihrer Klasse einen Verweis auf Xamarin.Essentials hinzu:Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

Überprüfen der aktuellen Akkuinformationen:Check current battery information:

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)
    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:Whenever any of the battery's properties change an event is triggered:

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.Devices that run on batteries can be put into a low-power energy-saver mode. Manchmal werden Geräte automatisch in diesen Modus umgeschaltet, z.B. wenn der Akku unter 20 % fällt.Sometimes devices are switched into this mode automatically, for example, when the battery drops below 20% capacity. Das Betriebssystem reagiert auf den Energiesparmodus, indem Aktivitäten reduziert werden, die den Akku stark beanspruchen.The operating system responds to energy-saver mode by reducing activities that tend to deplete the battery. Anwendungen können unterstützend wirken, indem sie Hintergrundverarbeitung oder andere Hochleistungsaktivitäten im Energiesparmodus vermeiden.Applications can help by avoiding background processing or other high-power activities when energy-saver mode is on.

Sie können auch den aktuellen Energiesparstatus des Geräts über die statische Eigenschaft Battery.EnergySaverStatus ermitteln:You can also obtain the current energy-saver status of the device using the static Battery.EnergySaverStatus property:

// Get energy saver status
var status = Battery.EnergySaverStatus;

Diese Eigenschaft gibt ein Mitglied der EnergySaverStatus-Enumeration zurück: On, Off oder Unknown.This property returns a member of the EnergySaverStatus enumeration, which is either On, Off, or Unknown. Wenn die Eigenschaft On zurückgibt, sollte die Anwendung Hintergrundverarbeitung oder andere Aktivitäten vermeiden, die ggf. viel Energie verbrauchen.If the property returns On, the application should avoid background processing or other activities that might consume a lot of power.

Außerdem sollte die Anwendung einen Ereignishandler installieren.The application should also install an event handler. Die Battery-Klasse zeigt ein Ereignis an, das ausgelöst wird, wenn sich der Energiesparstatus ändert:The Battery class exposes an event that is triggered when the energy-saver status changes:

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.If the energy-saver status changes to On, the application should stop performing background processing. Wenn der Status auf Unknown oder Off wechselt, kann die Anwendung die Hintergrundverarbeitung wieder aufnehmen.If the status changes to Unknown or Off, the application can resume background processing.

PlattformunterschiedePlatform Differences

Keine Plattformunterschiede.No platform differences.

APIAPI

Auf Channel 9 und auf YouTube finden Sie weitere Videos zu Xamarin.Find more Xamarin videos on Channel 9 and YouTube.