Xamarin.Essentials: Battery

Pre-release NuGet

The Battery class lets you check the device's battery information and monitor for changes.

Getting Started

To access the Battery functionality the following platform specific setup is required.

The Battery permission is required and must be configured in the Android project. This can be added in the following ways:

Open the AssemblyInfo.cs file under the Properties folder and add:

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

OR Update Android Manifest:

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" />

Or right click on the Android project and open the project's properties. Under Android Manifest find the Required permissions: area and check the Battery permission. This will automatically update the AndroidManifest.xml file.

Using Battery

Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

Check current battery information:

var level = Battery.ChargeLevel; // returns 0.0 to 1.0 or -1.0 if unable to determine.

var state = Battery.State;

switch (state)
    case BatteryState.Charging:
        // Currently charging
    case BatteryState.Full:
        // Battery is full
    case BatteryState.Discharging:
    case BatteryState.NotCharging:
        // Currently discharging battery or not being charged
    case BatteryState.NotPresent:
        // Battery doesn't exist in device (desktop computer)
    case BatteryState.Unknown:
        // Unable to detect battery state

var source = Battery.PowerSource;

switch (source)
    case BatteryPowerSource.Battery:
        // Being powered by the battery
    case BatteryPowerSource.AC:
        // Being powered by A/C unit
    case BatteryPowerSource.Usb:
        // Being powered by USB cable
    case BatteryPowerSource.Wireless:
        // Powered via wireless charging
    case BatteryPowerSource.Unknown:
        // Unable to detect power source

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.BatteryChanged += Battery_BatteryChanged;

    void Battery_BatteryChanged(object sender, BatteryChangedEventArgs   e)
        var level = e.ChargeLevel;
        var state = e.State;
        var source = e.PowerSource;
        Console.WriteLine($"Reading: Level: {level}, State: {state}, Source: {source}");

Platform Differences

No platform differences.