Xamarin.Essentials:Pil
Pil sınıfı, cihazın pil bilgilerini denetlemenize ve değişiklikleri izlemenize olanak tanır ve cihazın düşük güç modunda çalışıp çalışmadığını gösteren enerji tasarrufu durumu hakkında bilgi sağlar. Cihazın enerji tasarrufu durumu açıksa uygulamalar arka plan işlemeden kaçınmalıdır.
Kullanmaya başlayın
Bu API'yi kullanmaya başlamak için kitaplığın projelerinizde düzgün yüklendiğinden ve ayarlandığından emin olmak için Xamarin.Essentials kullanmaya başlama kılavuzunu okuyun.
Pil işlevine erişmek için aşağıdaki platforma özgü kurulum gereklidir.
İzin Battery
gereklidir ve Android projesinde yapılandırılmalıdır. Bu, aşağıdaki yollarla eklenebilir:
Özellikler klasörünün altındaki AssemblyInfo.cs dosyasını açın ve aşağıdakileri ekleyin:
[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]
VEYA Android Bildirimini Güncelleştir:
Özellikler klasörünün altındaki AndroidManifest.xml dosyasını açın ve bildirim düğümünün içine aşağıdakileri ekleyin.
<uses-permission android:name="android.permission.BATTERY_STATS" />
Veya Android projesine sağ tıklayıp projenin özelliklerini açın. Android Bildirimi altında Gerekli izinler: alanını bulun ve Pil iznini denetleyin. Bu, AndroidManifest.xml dosyasını otomatik olarak güncelleştirir.
Pil Kullanma
Sınıfınızda için Xamarin.Essentials bir başvuru ekleyin:
using Xamarin.Essentials;
Geçerli pil bilgilerini denetleyin:
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;
}
Pilin özelliklerinden herhangi biri değiştiğinde bir olay tetiklendiğinde:
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}");
}
}
Piller üzerinde çalışan cihazlar düşük güç enerji tasarrufu moduna geçirilebilir. Bazen cihazlar otomatik olarak bu moda geçer, örneğin pil %20 kapasitenin altına düştüğünde. İşletim sistemi, pili tükenme eğiliminde olan etkinlikleri azaltarak enerji tasarrufu moduna yanıt verir. Uygulamalar, enerji tasarrufu modu açıkken arka plan işleme veya diğer yüksek güç etkinliklerinden kaçınarak yardımcı olabilir.
Statik Battery.EnergySaverStatus
özelliği kullanarak cihazın geçerli enerji tasarrufu durumunu da elde edebilirsiniz:
// Get energy saver status
var status = Battery.EnergySaverStatus;
Bu özellik , veya Unknown
olan On
Off
numaralandırmanın EnergySaverStatus
bir üyesini döndürür. özelliği döndürürse On
, uygulama arka plan işlemeden veya çok fazla güç tüketebilecek diğer etkinliklerden kaçınmalıdır.
Uygulamanın bir olay işleyicisi de yüklemesi gerekir. Pil sınıfı, enerji tasarrufu durumu değiştiğinde tetiklenen bir olayı kullanıma sunar:
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;
}
}
Enerji tasarrufu durumu olarak değişirse On
, uygulama arka plan işleme gerçekleştirmeyi durdurmalıdır. Durum veya Off
olarak değişirseUnknown
, uygulama arka plan işlemeye devam edebilir.
Platform Farkları
API
İlgili Video
Channel 9 ve YouTube'da daha fazla Xamarin videosu bulun.