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
, , Off
atau 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.