Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser l’interface utilisateur de l’application multiplateforme .NET (.NET MAUI) IBattery pour vérifier 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 propriété Battery.Default. L'interface IBattery et la classe Battery sont contenues dans l'espace de noms Microsoft.Maui.Devices.
Get started
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
usingles directives :[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]ou
Mettez à jour le manifeste Android :
Ouvrez le fichier Plateformes/Android/AndroidManifest.xml et ajoutez la ligne suivante dans le
manifestnœ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 Plateformes/Android/AndroidManifest.xml pour ouvrir l’éditeur de manifeste Android. Ensuite, sous Autorisations requises , vérifiez 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 vérifié en accédant à la Battery.Default propriété, qui est l’implémentation par défaut de l’interface IBattery . 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 surveiller l'événement BatteryInfoChanged et signaler l'état de la batterie aux contrôleurs Label :
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 s’exécutent sur des batteries peuvent être mis en mode d’économie d’énergie faible. Parfois, les appareils sont automatiquement basculés dans ce mode, comme lorsque la batterie tombe en dessous de 20% capacité. Le système d’exploitation répond au mode d’économie d’énergie en réduisant les activités qui ont tendance à épuiser la batterie. Les applications peuvent vous aider en évitant le traitement en arrière-plan ou d’autres activités à puissance élevée lorsque le mode d’économie d’énergie est activé.
Important
Les applications doivent éviter le traitement en arrière-plan si l’état de l’économiseur d’énergie de l’appareil est activé.
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 valeurs BatteryPowerSource.AC, BatteryPowerSource.Usb, et BatteryPowerSource.Wireless indiquent que la batterie est en train de se charger.
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 de plateforme.
Parcourir l'exemple