.NET for Androidでバッテリー残量を取得する

提供:MonoBook
2024年10月21日 (月) 09:46時点におけるAdministrator (トーク | 投稿記録)による版 (ページの作成:「 ; 環境 * .NET 8 for Android ; 概要 バッテリーの状態変化を監視するRegisterReceiver関数のreceiver引数をnullにすると現在値が取得できます。 ; コード <source lang="csharp"> readonly IntentFilter filter = new IntentFilter(Intent.ActionBatteryChanged); int GetBatteryLevel(Context context) { // receiverをnullにするとバッテリ状態を単発で習得できます。 var intent = context.RegisterReceiver(receiver…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)


環境
  • .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;
}