Aracılığıyla paylaş


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 Unknownolan OnOffnumaralandı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 Offolarak değişirseUnknown, uygulama arka plan işlemeye devam edebilir.

Platform Farkları

Platform farkı yoktur.

API

Channel 9 ve YouTube'da daha fazla Xamarin videosu bulun.