Sdílet prostřednictvím


Baterie

Browse sample. Procházení ukázky

Tento článek popisuje, jak můžete pomocí rozhraní .NET Multi-Platform App UI (.NET MAUI) IBattery zkontrolovat informace o baterii zařízení a monitorovat změny. Toto rozhraní také poskytuje informace o stavu úspory energie zařízení, což označuje, jestli zařízení běží v režimu nízké spotřeby.

Výchozí implementace IBattery rozhraní je k dispozici prostřednictvím Battery.Default vlastnosti. Rozhraní IBattery i Battery třída jsou obsaženy v Microsoft.Maui.Devices oboru názvů.

Začínáme

Pro přístup k funkcím baterie se vyžaduje následující nastavení specifické pro platformu.

Oprávnění BatteryStats je povinné a musí být nakonfigurováno v projektu Android. Oprávnění můžete nakonfigurovat následujícími způsoby:

  • Přidejte oprávnění založené na sestavení:

    Otevřete soubor Platforms/Android/MainApplication.cs a za direktivy přidejte následující atribut using sestavení:

    [assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]
    

    - nebo -

  • Aktualizace manifestu Androidu:

    Otevřete soubor Platforms/Android/AndroidManifest.xml a do uzlu přidejte následující řádekmanifest:

    <uses-permission android:name="android.permission.BATTERY_STATS" />
    

    - nebo -

  • Aktualizace manifestu Androidu v editoru manifestu:

    V sadě Visual Studio poklikejte na soubor Platforms/Android/AndroidManifest.xml a otevřete editor manifestu Androidu. Potom v části Požadovaná oprávnění zkontrolujte oprávnění BATTERY_STATS. Tím se automaticky aktualizuje soubor AndroidManifest.xml .

Kontrola stavu baterie

Stav baterie lze zkontrolovat přístupem k Battery.Default vlastnosti, což je výchozí implementace IBattery rozhraní. Toto rozhraní definuje různé vlastnosti, které poskytují informace o stavu baterie, například ChargeLevel ke čtení, kolik baterie zbývá. Vlastnost ChargeLevel vrátí hodnotu v rozmezí od 0,0 do 1,0, což označuje úroveň nabití baterie z prázdné na plný, v uvedeném pořadí.

Událost BatteryInfoChanged je k dispozici a je vyvolána při změně stavu baterie. Následující příklad ukazuje, jak použít monitorování BatteryInfoChanged události a nahlásit stav baterie ovládacím Label prvkům:

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.";
}

Režim úspory energie s nízkým výkonem

Zařízení, která běží na bateriích, lze umístit do režimu úspory energie s nízkým výkonem. Někdy se zařízení automaticky přepnou do tohoto režimu, například když baterie klesne pod 20% kapacitu. Operační systém reaguje na režim úspory energie snížením aktivit, které mají tendenci zčertět baterii. Aplikace vám můžou pomoct vyhnout se zpracování na pozadí nebo jiným vysokovýkonným aktivitám, když je zapnutý režim úspory energie.

Důležité

Aplikace by se měly vyhnout zpracování na pozadí, pokud je stav úspory energie zařízení zapnutý.

Stav úspory energie zařízení lze číst přístupem k EnergySaverStatus vlastnosti, která je buď On, Offnebo Unknown. Pokud je Onstav , aplikace by se měla vyhnout zpracování na pozadí nebo jiným aktivitám, které mohou spotřebovávat velké množství energie.

Baterie vyvolá EnergySaverStatusChanged událost, když baterie vstoupí nebo opustí režim úspory energie. Pomocí vlastnosti můžete také získat aktuální stav úspory energie zařízení EnergySaverStatus :

Následující příklad kódu monitoruje stav úspory energie a nastaví vlastnost odpovídajícím způsobem.

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();
}

Zdroj napájení

Tato PowerSource vlastnost vrátí BatteryPowerSource výčet, který označuje, jak se zařízení účtuje, pokud vůbec. Pokud se neúčtuje, stav je BatteryPowerSource.Battery. Hodnoty BatteryPowerSource.ACa BatteryPowerSource.Wireless , BatteryPowerSource.Usboznačují, že baterie je nabitá.

Následující příklad kódu nastaví text Label ovládacího prvku na základě zdroje napájení.

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"
    };
}

Rozdíly mezi platformami

Tato část popisuje rozdíly specifické pro platformu s baterií.

Žádné rozdíly mezi platformami.