Xamarin.Essentials:Baterii

Klasa Baterii umożliwia sprawdzenie informacji o baterii urządzenia i monitorowanie pod kątem zmian oraz informacje o stanie oszczędzania energii urządzenia, co wskazuje, czy urządzenie działa w trybie niskiego zasilania. Aplikacje powinny unikać przetwarzania w tle, jeśli stan oszczędzania energii urządzenia jest włączony.

Rozpocznij

Aby rozpocząć korzystanie z tego interfejsu API, przeczytaj przewodnik wprowadzający , Xamarin.Essentials aby upewnić się, że biblioteka jest prawidłowo zainstalowana i skonfigurowana w projektach.

Aby uzyskać dostęp do funkcji baterii , wymagana jest następująca konfiguracja specyficzna dla platformy.

Uprawnienie Battery jest wymagane i musi być skonfigurowane w projekcie systemu Android. Można to dodać w następujący sposób:

Otwórz plik AssemblyInfo.cs w folderze Właściwości i dodaj:

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

LUB Zaktualizuj manifest systemu Android:

Otwórz plik AndroidManifest.xml w folderze Właściwości i dodaj następujący element w węźle manifestu.

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

Możesz też kliknąć prawym przyciskiem myszy projekt systemu Android i otworzyć właściwości projektu. W obszarze Manifest systemu Android znajdź wymagane uprawnienia: obszar i sprawdź uprawnienia baterii . Spowoduje to automatyczne zaktualizowanie pliku AndroidManifest.xml .

Korzystanie z baterii

Dodaj odwołanie do Xamarin.Essentials klasy:

using Xamarin.Essentials;

Sprawdź bieżące informacje 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;
}

Za każdym razem, gdy każda z właściwości baterii zmienia zdarzenie jest wyzwalane:

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

Urządzenia, które działają na bateriach, można umieścić w trybie oszczędzania energii o niskiej mocy. Czasami urządzenia są przełączane do tego trybu automatycznie, na przykład gdy bateria spadnie poniżej 20% pojemności. System operacyjny reaguje na tryb oszczędzania energii, zmniejszając działania, które mają tendencję do wyczerpania baterii. Aplikacje mogą pomóc, unikając przetwarzania w tle lub innych działań o wysokiej mocy, gdy jest włączony tryb oszczędzania energii.

Można również uzyskać bieżący stan oszczędzania energii urządzenia przy użyciu właściwości statycznej Battery.EnergySaverStatus :

// Get energy saver status
var status = Battery.EnergySaverStatus;

Ta właściwość zwraca element członkowski EnergySaverStatus wyliczenia, czyli On, Offlub Unknown. Jeśli właściwość zwróci Onwartość , aplikacja powinna unikać przetwarzania w tle lub innych działań, które mogą zużywać dużo mocy.

Aplikacja powinna również zainstalować program obsługi zdarzeń. Klasa baterii uwidacznia zdarzenie, które jest wyzwalane po zmianie stanu oszczędzania energii:

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

Jeśli stan oszczędzania energii zmieni się na On, aplikacja powinna przestać wykonywać przetwarzanie w tle. Jeśli stan zmieni się na Unknown lub Off, aplikacja może wznowić przetwarzanie w tle.

Różnice między platformami

Brak różnic między platformami.

interfejs API

Więcej filmów na platformie Xamarin można znaleźć w witrynach Channel 9 i YouTube.