Sdílet prostřednictvím


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, Offnebo 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í.

Rozdíly mezi platformami

Žádné rozdíly mezi platformami.

rozhraní API

Další videa o Xamarinu najdete na Channel 9 a YouTube.