package com.boardgamegeek.util; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; /** * Static methods for inspecting the battery information. */ public class BatteryUtils { private BatteryUtils() { } public static boolean isCharging(Context context) { Intent batteryStatus = getBatteryStatus(context); int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); return status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; } public static float getBatteryLevel(Context context) { Intent batteryStatus = getBatteryStatus(context); if (batteryStatus != null) { int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); return (level / (float) scale); } else { return 0.5f; } } public static boolean isBatteryLow(Context context) { return getBatteryLevel(context) < 0.15; // 15% matches system low battery level } private static Intent getBatteryStatus(Context context) { IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); return context.registerReceiver(null, filter); } }