I am attempting to read the state of the Android battery when my repeating alarm broadcaster is called I have the following setup:
public class RepeatingAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
// Acquire the make of the device
final String PhoneModel = android.os.Build.MODEL;
final String AndroidVersion = android.os.Build.VERSION.RELEASE;
// Grab the battery information
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
final float batteryPct = level / (float)scale;
}
}
But I don't understand why it is returning that batteryPct = 1
. Is there something I am missing here? I added the correct permissions based on the android Google page, but that doesn't seem to have helped.
You might be getting -1 for both
level
andscale
variable (the default value you specified), so try to print their values to make sure that theintent
has those values set properly.You should listen to
ACTION_BATTERY_CHANGED
to get battery level in AndroidYou are getting
-1
for bothlevel
andscale
. That is because you might be trying to broadcastACTION_BATTERY_CHANGED
in the manifest.ACTION_BATTERY_CHANGED
is a sticky intent and you cannot register a receiver to it in the manifest. Try the followingYou would not neet to device a receiver for this intent, just use the above mentioned way, whereever you want to use it.