i want to detect battery change at every percentage. I am able to detect battery level once with broadcast receiver. But its not updating value automatically when % change from 66 to 67.
Here is my code.
private void batteryLevel() {
BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
Log.i("Battery CHANGED******",":: IN RECEIVER");
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int level = -1;
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100) / scale;
}
btnConsumer.setText("Battery Level Remaining: " + level + "%");
}
};
IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelReceiver, batteryLevelFilter);
}
Added permission
<uses-permission android:name="android.permission.BATTERY_STATS"></uses-permission>
It detect 66 but when it change 65 or 67 it will not update value. or not display log too
I want to make it like i can get every change.
Thanks in advance.
First, you do not need the BATTERY_STATS
permission.
Second, the very first line of your onReceive()
unregisters your BroadcastReceiver
, thereby preventing you from getting any further updates.
Third, there is no guarantee that you will have battery information delivered to you for each and every 1% change. Many Motorola phones, for example, only send ACTION_BATTERY_CHANGED
every 10% until the battery gets low. The decision on how frequently to broadcast ACTION_BATTERY_CHANGED
is up to the device manufacturer, not you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With