How to get battery level

648 Views Asked by At

I am trying to get Battery Level of Mobile using ADF. I mean for example if battery charged up to fifty I want to get that value.

How can achieve this?

I don't know exactly can I achieve this by using Android-intent.

If yes, what do I have to do?

3

There are 3 best solutions below

0
On

ADF Mobile is an HTML5/Java/Javascript/CSS framework and it depends on Cordova/Phone-gap, so any feature you need try to search on how to do it with Cordova.

If there is a straight way of doing it then you can include a Javascript file to your ADFMobile feature, and you write cordova JS code there, and it could be called on page load or you can call it directly from your javaBean.

Refer to below link to see how to call javascript function from javaBean http://oracleadfmobile.wordpress.com/2013/11/14/amx-activity-indicator/

But if the feature is not a standard Cordova API, and that's your case (refer to how to get battery level in cordova 2.9 when it need?), then you will need to check out this video http://www.youtube.com/watch?v=jT4O4Wt9PXw to know how to extend ADF Mobile with Cordova Plugin.

1
On

here is a code sample that explains how to get battery information:

To sum it up, a broadcast receiver for the ACTION_BATTERY_CHANGED intent is set up dynamically, because it can not be received through components declared in manifests, only by explicitly registering for it with Context.registerReceiver().

public class Main extends Activity {
  private TextView batteryTxt;
  private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context ctxt, Intent intent) {
      int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
      batteryTxt.setText(String.valueOf(level) + "%");
    }
  };

  @Override
  public void onCreate(Bundle b) {
    super.onCreate(b);
    setContentView(R.layout.main);
    contentTxt = (TextView) this.findViewById(R.id.batteryTxt);
    this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
  }
}
1
On

try to use this:

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();
    }

and in oncreate add this:

batteryPercent = (TextView) this.findViewById(R.id.batteryLevel);
         getBatteryPercentage();