Xamarin.Essentials:Batteria

La classe Battery consente di controllare le informazioni sulla batteria del dispositivo e monitorare eventuali modifiche e fornisce informazioni sullo stato di risparmio energia del dispositivo, che indica se il dispositivo è in esecuzione in modalità basso consumo. Le applicazioni dovrebbero evitare l'elaborazione in background se lo stato di risparmio energia del dispositivo è attivo.

Operazioni preliminari

Per iniziare a usare questa API, leggere la guida introduttiva per Xamarin.Essentials assicurarsi che la libreria sia installata e configurata correttamente nei progetti.

Per accedere alla funzionalità Battery, è necessaria la configurazione seguente specifica della piattaforma.

L'autorizzazione Battery è obbligatoria e deve essere configurata nel progetto Android. È possibile aggiungerla nei modi seguenti:

Aprire il file AssemblyInfo.cs nella cartella Proprietà e aggiungere:

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

OPPURE aggiornare il manifesto di Android:

Aprire il file AndroidManifest.xml nella cartella Proprietà e aggiungere quanto segue all'interno del nodo manifest.

<uses-permission android:name="android.permission.BATTERY_STATS" />

Oppure fare clic con il pulsante destro del mouse sul progetto Android e aprire le proprietà del progetto. In Manifesto Android trovare l'area Autorizzazioni necessarie e selezionare l'autorizzazione Battery (Batteria). Il file AndroidManifest.xml verrà aggiornato automaticamente.

Uso di Battery

Aggiungere un riferimento a Xamarin.Essentials nella classe :

using Xamarin.Essentials;

Controllare le informazioni sulla batteria correnti:

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;
}

Ogni volta che una delle proprietà della batteria cambia, viene attivato un evento:

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}");
    }
}

I dispositivi eseguiti a batteria possono essere messi in modalità di risparmio energia a basso consumo. In alcuni casi, questa modalità viene attivata automaticamente per i dispositivi, ad esempio quando la carica della batteria scende sotto il 20%. Il sistema operativo risponde alla modalità di risparmio energia riducendo le attività che tendono a scaricare la batteria. Le applicazioni possono contribuire evitando l'elaborazione in background o altre attività con un consumo elevato di energia, quando è attiva la modalità di risparmio energia.

È anche possibile ottenere lo stato corrente di risparmio energia del dispositivo usando la proprietà statica Battery.EnergySaverStatus:

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

Questa proprietà restituisce un membro dell'enumerazione EnergySaverStatus, ovvero On, Off o Unknown. Se la proprietà restituisce On, l'applicazione deve evitare l'elaborazione in background o altre attività che potrebbero usare molta energia.

L'applicazione deve anche installare un gestore eventi. La classe Battery espone un evento che viene attivato quando cambia lo stato di risparmio energia:

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;
    }
}

Se lo stato di risparmio energia diventa On, l'applicazione deve interrompere l'elaborazione in background. Se lo stato diventa Unknown o Off, l'applicazione può riprendere l'elaborazione in background.

Differenze tra le piattaforme

Non esistono differenze per questa piattaforma.

API

Altri video di Xamarin sono disponibili su Channel 9 e YouTube.