ACTION_BATTERY_CHANGED intent in service
android
Solution
Better way to get change value you should use `BroadcastReceiver`.
To get changed value when battery change. You need to use `BroadCastReceiver`.
IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelReceiver, batteryLevelFilter);
BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent){
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float battPct = level/(float)scale;
}
};
Problem
I am using this code to track battery information in my service: ``` Intent i = new ContextWrapper(applicationContext).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); // now you can get the level and scale from this intent variable int level = i.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = i.getIntExtra(BatteryManager.EXTRA_SCALE, -1); float battPct = level/(float)scale; ``` 1.I want to know if it will change automatically then battery is changed? Or do I need to fire that intent by myself periodically? 2. Also I would like to know if there is a way to calculate how much time elapsed since 1% of remaining battery has been used.