.NET for Androidでバッテリー残量を取得する
- 環境
- .NET 8 for Android
- 概要
バッテリーの状態変化を監視するRegisterReceiver関数のreceiver引数をnullにすると現在値が取得できます。
- コード
readonly IntentFilter filter = new IntentFilter(Intent.ActionBatteryChanged);
int GetBatteryLevel(Context context)
{
// receiverをnullにするとバッテリ状態を単発で習得できます。
var intent = context.RegisterReceiver(receiver: null, filter: filter);
if (intent != null && intent.Action == Intent.ActionBatteryChanged)
{
// 現在値
var level = intent.GetIntExtra(BatteryManager.ExtraLevel, -1),
// 最大値(ほとんどの機種は100だけど安心するな)
var scale = intent.GetIntExtra(BatteryManager.ExtraScale, -1),
// 残量パーセント
var percentage = (int)(level / scale * 100f);
return percentage;
}
return -1;
}