Batterie
Cet article explique comment utiliser l’interface utilisateur de l’application multiplateforme .NET (.NET MAUI) IBattery pour case activée les informations de batterie de l’appareil et surveiller les modifications. Cette interface fournit également des informations sur l’état de l’économiseur d’énergie de l’appareil, ce qui indique si l’appareil s’exécute en mode basse puissance.
L’implémentation par défaut de l’interface IBattery
est disponible via la Battery.Default propriété. L’interface et Battery
la IBattery
classe sont contenues dans l’espace Microsoft.Maui.Devices
de noms.
Démarrage
Pour accéder à la fonctionnalité Batterie, la configuration spécifique à la plateforme suivante est requise.
L’autorisation BatteryStats
est obligatoire, et doit être configurée dans le projet Android. Vous pouvez configurer l’autorisation de la manière suivante :
Ajoutez l’autorisation basée sur l’assembly :
Ouvrez le fichier Platforms/Android/MainApplication.cs et ajoutez l’attribut d’assembly suivant après
using
les directives :[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]
- ou -
Mettez à jour le manifeste Android :
Ouvrez le fichier Platforms/Android/AndroidManifest.xml et ajoutez la ligne suivante dans le
manifest
nœud :<uses-permission android:name="android.permission.BATTERY_STATS" />
- ou -
Mettez à jour le manifeste Android dans l’éditeur de manifeste :
Dans Visual Studio, double-cliquez sur le fichier Platforms/Android/AndroidManifest.xml pour ouvrir l’éditeur de manifeste Android. Ensuite, sous Autorisations requises case activée l’autorisation BATTERY_STATS. Cela met automatiquement à jour le fichier AndroidManifest.xml.
Vérifier l’état de la batterie
L’état de la batterie peut être case activée en accédant à la Battery.Default
propriété, qui est l’implémentation par défaut de l’interfaceIBattery
. Cette interface définit différentes propriétés pour fournir des informations sur l’état de la batterie, par ChargeLevel exemple pour lire la quantité de batterie restante. La ChargeLevel
propriété retourne une valeur comprise entre 0,0 et 1,0, indiquant respectivement le niveau de charge de la batterie entre vide et complet.
L’événement BatteryInfoChanged est également disponible et est déclenché lorsque l’état de la batterie change. L’exemple suivant montre comment utiliser le moniteur de l’événement BatteryInfoChanged
et signaler l’état de la batterie aux Label contrôles :
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.";
}
Mode d’économie d’énergie à faible puissance
Les appareils qui fonctionnent sur batterie peuvent être mis en mode faible consommation d’énergie. Parfois, les appareils sont automatiquement basculés dans ce mode, comme lorsque la batterie tombe en dessous de 20 % de capacité. En mode économie d’énergie, le système d’exploitation réduit les activités qui ont tendance à épuiser la batterie. Les applications peuvent aller dans ce sens en évitant le traitement en arrière-plan ou autres activités énergivores lorsque le mode économie d’énergie est activé.
Important
Les applications doivent de préférence éviter le traitement en arrière-plan lorsque l’économie d’énergie de l’appareil est activée.
L’état de l’économiseur d’énergie de l’appareil peut être lu en accédant à la EnergySaverStatus propriété, qui est soit On, Offou Unknown. Si l’état est On
, l’application doit éviter le traitement en arrière-plan ou d’autres activités qui peuvent consommer beaucoup de puissance.
La batterie déclenche l’événement EnergySaverStatusChanged lorsque la batterie entre ou quitte le mode d’économie d’énergie.
Vous pouvez également obtenir l’état actuel de l’économiseur d’énergie de l’appareil à l’aide de la EnergySaverStatus
propriété :
L’exemple de code suivant surveille l’état de l’économiseur d’énergie et définit une propriété en conséquence.
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();
}
Source d’alimentation
La PowerSource propriété retourne une BatteryPowerSource énumération qui indique la façon dont l’appareil est facturé, le cas échéant. S’il n’est pas facturé, l’état est BatteryPowerSource.Battery. Les BatteryPowerSource.ACvaleurs et BatteryPowerSource.Wireless les valeurs BatteryPowerSource.Usbindiquent que la batterie est chargée.
L’exemple de code suivant définit le texte d’un Label contrôle basé sur la source d’alimentation.
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"
};
}
Différences de plateforme
Cette section décrit les différences spécifiques à la plateforme avec la batterie.
Aucune différence entre les plateformes.