Android battery level in percentage/Numbers Example



Its quite simple to get Android battery information programmatically in numbers/percentage. You need to know the basics of  broadcaster receiver first. Have a look at this here Before starting with the program, let me explain the stuffs used in this example.
Intent.Action_Battery_Changed
This is a sticky broadcast containing the charging state, level, and other information about the battery.The android BatteryManager class contains strings and constants used for values in the ACTION_BATTERY_CHANGED Intent. Among the various constants available, we will be making use of two constants -BatteryManager.EXTRA_LEVEL and  BatteryManager.EXTRA_SCALE

BatteryManager.Extra_Level
Integer field containing the current battery level, from 0 to EXTRA_SCALE.

BatteryManager.Extra_Scale
Integer containing the maximum battery level.

registerReceiver(BroadcastReceiver receiver, IntentFilter filter)
We need to register for Action_Battery_Changed broadcast in this method as described in the example. This will get invoked whenever this event occurs. Since this is a sticky Intent, it keeps on broadcasting once registered.
Android Battery Percentage

AndroidBatteryPercentage Example -  
package com.example.androidbatterypercentage;

import android.os.BatteryManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
 private TextView batteryPercent;
  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;
             }
             batteryPercent.setText("Battery Level Remaining: " + level + "%");
         }
     }; 
     IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
     registerReceiver(batteryLevelReceiver, batteryLevelFilter);
  }
 
   /* @Override*/
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         batteryPercent = (TextView) this.findViewById(R.id.batteryLevel);
         getBatteryPercentage();
    }

//    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
}
That's it, we are done with the example to get Android battery level in percentage using Android battery manager class.

Source code of this application
AndroidBatteryPercentage.rar


 



Reactions:

2 comments :