🍣

UnityでAndroidのバッテリ残量を確認する方法

2024/09/28に公開

やりたいこと

Unityで作成したAndroidのアプリケーション上でスマホのバッテリ残量を確認したい。

動作確認環境

Windows 11 Home + Unity 2022.3.181f
OPPo Reno5 A + ColorOS V12

実装

    private void checkBattery()
    {
        // battery managerの取得
        AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaObject context = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
        AndroidJavaObject batteryManager = context.Call<AndroidJavaObject>("getSystemService", "batterymanager");

        // battery levelの取得
        int batteryLevel = batteryManager.Call<int>("getIntProperty", 4); // BatteryManager.BATTERY_PROPERTY_CAPACITY

        // ログ表示methodの呼び出し
        appendLog("Battery Level: " + batteryLevel + "%");
    }

BatteryBanagerを取得し、BATTERY_PROPERTY_CAPACITYの値を取得している

BatteryManagerについては詳しくは以下参照
https://developer.android.com/reference/android/os/BatteryManager

Discussion