Xamarin.Essentials:Bateria
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
, Off
lub Unknown
. Jeśli właściwość zwróci On
wartość , 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
Powiązany film wideo
Więcej filmów na platformie Xamarin można znaleźć w witrynach Channel 9 i YouTube.