Batteria
Questo articolo descrive come usare l'interfaccia dell'interfaccia dell'interfaccia dell'app multipiattaforma .NET (.NET MAUI) IBattery per controllare le informazioni sulla batteria del dispositivo e monitorare le modifiche. Questa interfaccia fornisce anche informazioni sullo stato di risparmio energia del dispositivo, che indica se il dispositivo è in esecuzione in modalità a basso consumo.
L'implementazione predefinita dell'interfaccia IBattery
è disponibile tramite la Battery.Default proprietà . Sia l'interfaccia che Battery
la IBattery
classe sono contenute nello spazio dei Microsoft.Maui.Devices
nomi .
Introduzione
Per accedere alla funzionalità Battery è necessaria la configurazione specifica della piattaforma seguente.
L'autorizzazione BatteryStats
è obbligatoria e deve essere configurata nel progetto Android. È possibile configurare l'autorizzazione nei modi seguenti:
Aggiungere l'autorizzazione basata su assembly:
Aprire il file Platforms/Android/MainApplication.cs e aggiungere l'attributo assembly seguente dopo
using
le direttive:[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]
- oppure -
Aggiornare il manifesto Android:
Aprire il file Platforms/Android/AndroidManifest.xml e aggiungere la riga seguente nel
manifest
nodo:<uses-permission android:name="android.permission.BATTERY_STATS" />
- oppure -
Aggiornare il manifesto Android nell'editor del manifesto:
In Visual Studio fare doppio clic sul file Platforms/Android/AndroidManifest.xml per aprire l'editor del manifesto Android. Quindi, in Autorizzazioni necessarie controllare l'autorizzazione BATTERY_STATS . Il file AndroidManifest.xml verrà aggiornato automaticamente.
Controllare lo stato della batteria
È possibile controllare lo stato della batteria accedendo alla Battery.Default
proprietà , ovvero l'implementazione predefinita dell'interfaccia IBattery
. Questa interfaccia definisce varie proprietà per fornire informazioni sullo stato della batteria, ad esempio ChargeLevel per leggere la quantità di batteria lasciata. La ChargeLevel
proprietà restituisce un valore compreso tra 0,0 e 1,0, che indica rispettivamente il livello di carica della batteria da vuoto a pieno.
L'evento BatteryInfoChanged è disponibile anche e viene generato quando lo stato della batteria cambia. L'esempio seguente illustra come usare il monitoraggio dell'evento BatteryInfoChanged
e segnalare lo stato della batteria ai Label controlli:
private void BatterySwitch_Toggled(object sender, ToggledEventArgs e) =>
WatchBattery();
private bool _isBatteryWatched;
private void WatchBattery()
{
if (!_isBatteryWatched)
{
Battery.Default.BatteryInfoChanged += Battery_BatteryInfoChanged;
}
else
{
Battery.Default.BatteryInfoChanged -= Battery_BatteryInfoChanged;
}
_isBatteryWatched = !_isBatteryWatched;
}
private void Battery_BatteryInfoChanged(object sender, BatteryInfoChangedEventArgs e)
{
BatteryStateLabel.Text = e.State switch
{
BatteryState.Charging => "Battery is currently charging",
BatteryState.Discharging => "Charger is not connected and the battery is discharging",
BatteryState.Full => "Battery is full",
BatteryState.NotCharging => "The battery isn't charging.",
BatteryState.NotPresent => "Battery is not available.",
BatteryState.Unknown => "Battery is unknown",
_ => "Battery is unknown"
};
BatteryLevelLabel.Text = $"Battery is {e.ChargeLevel * 100}% charged.";
}
Modalità risparmio energia a basso consumo
I dispositivi eseguiti a batteria possono essere messi in modalità di risparmio energia a basso consumo. A volte i dispositivi vengono spostati automaticamente in questa modalità, ad esempio quando la batteria scende al di sotto del 20% di capacità. 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.
Importante
Le applicazioni dovrebbero evitare l'elaborazione in background se lo stato di risparmio energia del dispositivo è attivo.
Lo stato del risparmio energia del dispositivo può essere letto accedendo alla EnergySaverStatus proprietà , ovvero On, Offo Unknown. Se lo stato è On
, l'applicazione deve evitare l'elaborazione in background o altre attività che potrebbero consumare molta potenza.
La batteria genera l'evento EnergySaverStatusChanged quando la batteria entra o lascia la modalità risparmio energia.
È anche possibile ottenere lo stato corrente del risparmio energia del dispositivo usando la EnergySaverStatus
proprietà :
Nell'esempio di codice seguente viene monitorato lo stato del risparmio energia e viene impostata una proprietà di conseguenza.
private bool _isBatteryLow = false;
private void BatterySaverSwitch_Toggled(object sender, ToggledEventArgs e)
{
// Capture the initial state of the battery
_isBatteryLow = Battery.Default.EnergySaverStatus == EnergySaverStatus.On;
BatterySaverLabel.Text = _isBatteryLow.ToString();
// Watch for any changes to the battery saver mode
Battery.Default.EnergySaverStatusChanged += Battery_EnergySaverStatusChanged;
}
private void Battery_EnergySaverStatusChanged(object sender, EnergySaverStatusChangedEventArgs e)
{
// Update the variable based on the state
_isBatteryLow = Battery.Default.EnergySaverStatus == EnergySaverStatus.On;
BatterySaverLabel.Text = _isBatteryLow.ToString();
}
Fonte di alimentazione
La PowerSource proprietà restituisce un'enumerazione BatteryPowerSource che indica la modalità di addebito del dispositivo, se necessario. Se non viene addebitato, lo stato è BatteryPowerSource.Battery. I BatteryPowerSource.ACvalori , BatteryPowerSource.Usbe BatteryPowerSource.Wireless indicano che la batteria viene caricata.
Nell'esempio di codice seguente viene impostato il testo di un Label controllo basato sull'alimentazione.
private void SetChargeModeLabel()
{
BatteryPowerSourceLabel.Text = Battery.Default.PowerSource switch
{
BatteryPowerSource.Wireless => "Wireless charging",
BatteryPowerSource.Usb => "USB cable charging",
BatteryPowerSource.AC => "Device is plugged in to a power source",
BatteryPowerSource.Battery => "Device isn't charging",
_ => "Unknown"
};
}
Differenze tra le piattaforme
Questa sezione descrive le differenze specifiche della piattaforma con la batteria.
Non esistono differenze per questa piattaforma.