1

I want to get android battery info with more accuracy.

I've found some code which gives battery level and scale but it isn't helping me out much.

int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

I need more information that this. I need battery level with upto 2 places decimal accuracy.

P.S. I saw route '/sys/class/power_supply/battery/'. but i didn't find info which I want.

Gaurav Chauhan
  • 256
  • 3
  • 14

1 Answers1

1

Try this its working for me

private void getBatteryPercentage() {
    BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            context.unregisterReceiver(this);
            int currentLevel = intent.getIntExtra(
                    BatteryManager.EXTRA_LEVEL, -1);
            int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
            int level = -1;
            if (currentLevel >= 0 && scale > 0) {
                level = (currentLevel * 100) / scale;
            }
    Toast.makeText(getApplicationContext(), "Battery Level Remaining: " + level
                    + "%", Toast.LENGTH_LONG).show();

        }
    };
    IntentFilter batteryLevelFilter = new IntentFilter(
            Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryLevelReceiver, batteryLevelFilter);
}
  • Thx for your answer. but that is already i'm known. In my Galaxy S4, level and scale's value is only 100. so i don't get percent with decimal point... – HiddenParts. Jan 27 '15 at 08:28
  • operating that code, log prints scale, level 's max value is 100. i want to know accuracy float value.. – HiddenParts. Jan 28 '15 at 01:10