Partager via


Batterie

Browse sample. Parcourir l’exemple

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.