Xamarin.Essentials:Baterie
Třída baterie umožňuje zkontrolovat informace o baterii zařízení a sledovat změny a poskytuje informace o stavu úspory energie zařízení, což označuje, jestli zařízení běží v režimu nízkého napájení. Aplikace by se měly vyhnout zpracování na pozadí, pokud je stav úspory energie zařízení zapnutý.
Začínáme
Pokud chcete začít používat toto rozhraní API, přečtěte si úvodní příručkuXamarin.Essentials, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.
Pro přístup k funkcím baterie se vyžaduje následující nastavení specifické pro platformu.
Oprávnění Battery
je povinné a musí být nakonfigurováno v projektu Android. Můžete ho přidat následujícími způsoby:
Otevřete soubor AssemblyInfo.cs ve složce Vlastnosti a přidejte:
[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]
NEBO Aktualizovat manifest Androidu:
Otevřete soubor AndroidManifest.xml ve složce Vlastnosti a do uzlu manifestu přidejte následující kód.
<uses-permission android:name="android.permission.BATTERY_STATS" />
Nebo klikněte pravým tlačítkem na projekt Androidu a otevřete vlastnosti projektu. V části Manifest pro Android vyhledejte požadovaná oprávnění: oblast a zkontrolujte oprávnění baterie . Tím se automaticky aktualizuje soubor AndroidManifest.xml .
Použití baterie
Přidejte do Xamarin.Essentials předmětu odkaz:
using Xamarin.Essentials;
Zkontrolujte aktuální informace o baterii:
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;
}
Při každé změně vlastností baterie dojde k aktivaci události:
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}");
}
}
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í přepnou do tohoto režimu automaticky, 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.
Aktuální stav úspory energie zařízení můžete získat také pomocí statické Battery.EnergySaverStatus
vlastnosti:
// Get energy saver status
var status = Battery.EnergySaverStatus;
Tato vlastnost vrátí člen výčtu EnergySaverStatus
, který je buď On
, Off
nebo Unknown
. Pokud se tato vlastnost vrátí On
, aplikace by se měla vyhnout zpracování na pozadí nebo jiným aktivitám, které by mohly spotřebovávat velké množství energie.
Aplikace by také měla nainstalovat obslužnou rutinu události. Třída baterie zveřejňuje událost, která se aktivuje při změně stavu úspory energie:
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;
}
}
Pokud se stav úspory energie změní na On
, aplikace by měla přestat provádět zpracování na pozadí. Pokud se stav změní na Unknown
nebo Off
, aplikace může obnovit zpracování na pozadí.