Xamarin.Essentials:Pile
La classe Battery vous permet de vérifier les informations de batterie de l’appareil et de superviser les changements. Elle fournit aussi des informations sur l’état d’économie d’énergie de l’appareil, qui indique si l’appareil s’exécute dans un mode de basse consommation. 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.
Démarrage
Pour commencer à utiliser cette API, lisez le guide de prise en main pour Xamarin.Essentials vous assurer que la bibliothèque est correctement installée et configurée dans vos projets.
Pour accéder à la fonctionnalité de batterie, la configuration suivante spécifique à la plateforme est obligatoire.
L’autorisation Battery
est obligatoire, et doit être configurée dans le projet Android. Vous pouvez le faire de plusieurs façons, comme indiqué ci-dessous :
Ouvrez le fichier AssemblyInfo.cs sous le dossier Propriétés et ajoutez :
[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]
OU mettez à jour le manifeste Android :
Ouvrez le fichier AndroidManifest.xml sous le dossier Propriétés et ajoutez ce qui suit dans le nœud du manifeste.
<uses-permission android:name="android.permission.BATTERY_STATS" />
Ou cliquez avec le bouton droit sur le projet Android et ouvrez les propriétés du projet. Sous Manifeste Android, recherchez la zone Autorisations nécessaires, puis cochez l’autorisation Battery. Cela met automatiquement à jour le fichier AndroidManifest.xml.
Utilisation de la batterie
Ajoutez une référence à Xamarin.Essentials votre classe :
using Xamarin.Essentials;
Examinez les informations actuelles relatives à la batterie :
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;
}
Chaque fois que l’une des propriétés de la batterie change, un événement est déclenché :
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}");
}
}
Les appareils qui fonctionnent sur batterie peuvent être mis en mode faible consommation d’énergie. Parfois, ce basculement se fait automatiquement, par exemple, lorsque la batterie est à moins de 20 % de sa 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é.
Vous pouvez aussi obtenir l’état d’économie d’énergie actuel de l’appareil à l’aide de la propriété statique Battery.EnergySaverStatus
:
// Get energy saver status
var status = Battery.EnergySaverStatus;
Cette propriété retourne un membre de l’énumération EnergySaverStatus
: On
, Off
ou Unknown
. Si elle retourne On
, l’application doit de préférence éviter le traitement en arrière-plan ou autres activités susceptibles de consommer beaucoup d’énergie.
L’application doit également installer un gestionnaire d’événements. La classe Battery expose un événement qui est déclenché quand l’état d’économie d’énergie change :
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;
}
}
Si l’état d’économie d’énergie devient On
, l’application doit arrêter le traitement en arrière-plan. S’il passe à Unknown
ou Off
, elle peut reprendre le traitement en arrière-plan.