Baterie
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í řádek
manifest
:<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 On
stav , 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.