Intent.ACTION_BATTERY_CHANGED
는 Sticky Intent로 시스템에 등록되어 있어서 registerReceiver()
를 호출하면 즉시 반환됩니다. 반환된 Intent에서 필요한 값을 추출해 배터리 잔량을 %로 계산해 반환하는 메서드입니다.
public static int getBatteryPercentage(Context context) {
Intent batteryStatus = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;
return (int)(batteryPct * 100);
}