Bagikan melalui


Xamarin.Essentials:Baterai

Kelas Baterai memungkinkan Anda memeriksa informasi baterai perangkat dan memantau perubahan dan memberikan informasi tentang status penghemat energi perangkat, yang menunjukkan apakah perangkat berjalan dalam mode daya rendah. Aplikasi harus menghindari pemrosesan latar belakang jika status penghemat energi perangkat aktif.

Memulai

Untuk mulai menggunakan API ini, baca panduan memulai untuk Xamarin.Essentials memastikan pustaka diinstal dan disiapkan dengan benar di proyek Anda.

Untuk mengakses fungsionalitas Baterai , diperlukan penyiapan spesifik platform berikut.

Izin Battery diperlukan dan harus dikonfigurasi dalam proyek Android. Ini dapat ditambahkan dengan cara berikut:

Buka file AssemblyInfo.cs di bawah folder Properti dan tambahkan:

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

ATAU Perbarui Manifes Android:

Buka file AndroidManifest.xml di bawah folder Properti dan tambahkan yang berikut ini di dalam node manifes.

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

Atau klik kanan pada proyek Android dan buka properti proyek. Di bawah Manifes Android, temukan area Izin yang diperlukan: dan periksa izin Baterai. Ini akan secara otomatis memperbarui file AndroidManifest.xml .

Menggunakan Baterai

Tambahkan referensi ke Xamarin.Essentials di kelas Anda:

using Xamarin.Essentials;

Periksa informasi baterai saat ini:

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

Setiap kali salah satu properti baterai mengubah peristiwa dipicu:

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

Perangkat yang berjalan pada baterai dapat dimasukkan ke dalam mode hemat energi berdaya rendah. Terkadang perangkat dialihkan ke mode ini secara otomatis, misalnya, ketika baterai turun di bawah kapasitas 20%. Sistem operasi merespons mode penghemat energi dengan mengurangi aktivitas yang cenderung menguras baterai. Aplikasi dapat membantu dengan menghindari pemrosesan latar belakang atau aktivitas daya tinggi lainnya saat mode penghemat energi aktif.

Anda juga dapat memperoleh status penghemat energi perangkat saat ini menggunakan properti statis Battery.EnergySaverStatus :

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

Properti ini mengembalikan anggota EnergySaverStatus enumerasi, yaitu On, , Offatau Unknown. Jika properti mengembalikan On, aplikasi harus menghindari pemrosesan latar belakang atau aktivitas lain yang mungkin menggunakan banyak daya.

Aplikasi juga harus menginstal penanganan aktivitas. Kelas Baterai mengekspos peristiwa yang dipicu ketika status penghemat energi berubah:

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

Jika status penghemat energi berubah menjadi On, aplikasi harus berhenti melakukan pemrosesan latar belakang. Jika status berubah menjadi Unknown atau Off, aplikasi dapat melanjutkan pemrosesan latar belakang.

Perbedaan Platform

Tidak ada perbedaan platform.

API

Temukan video Xamarin lainnya di Channel 9 dan YouTube.