Fix issue #67019445: Detect BATTERY_LOW/OKAY
Add a new extra that indicates the battery is low.
Test: BatteryConstraintTest updated
Change-Id: I9ff92e15974ea092283a840cd01c860d6586c9b5
diff --git a/api/current.txt b/api/current.txt
index baf8e15..29c13af 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -30831,6 +30831,7 @@
field public static final int BATTERY_STATUS_FULL = 5; // 0x5
field public static final int BATTERY_STATUS_NOT_CHARGING = 4; // 0x4
field public static final int BATTERY_STATUS_UNKNOWN = 1; // 0x1
+ field public static final java.lang.String EXTRA_BATTERY_LOW = "battery_low";
field public static final java.lang.String EXTRA_HEALTH = "health";
field public static final java.lang.String EXTRA_ICON_SMALL = "icon-small";
field public static final java.lang.String EXTRA_LEVEL = "level";
diff --git a/api/system-current.txt b/api/system-current.txt
index a9afdd0..996f5de 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -33563,6 +33563,7 @@
field public static final int BATTERY_STATUS_FULL = 5; // 0x5
field public static final int BATTERY_STATUS_NOT_CHARGING = 4; // 0x4
field public static final int BATTERY_STATUS_UNKNOWN = 1; // 0x1
+ field public static final java.lang.String EXTRA_BATTERY_LOW = "battery_low";
field public static final java.lang.String EXTRA_HEALTH = "health";
field public static final java.lang.String EXTRA_ICON_SMALL = "icon-small";
field public static final java.lang.String EXTRA_LEVEL = "level";
diff --git a/api/test-current.txt b/api/test-current.txt
index 4b49c83..91be067 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -31034,6 +31034,7 @@
field public static final int BATTERY_STATUS_FULL = 5; // 0x5
field public static final int BATTERY_STATUS_NOT_CHARGING = 4; // 0x4
field public static final int BATTERY_STATUS_UNKNOWN = 1; // 0x1
+ field public static final java.lang.String EXTRA_BATTERY_LOW = "battery_low";
field public static final java.lang.String EXTRA_HEALTH = "health";
field public static final java.lang.String EXTRA_ICON_SMALL = "icon-small";
field public static final java.lang.String EXTRA_LEVEL = "level";
diff --git a/core/java/android/os/BatteryManager.java b/core/java/android/os/BatteryManager.java
index 6e0f70c1..843bdb5 100644
--- a/core/java/android/os/BatteryManager.java
+++ b/core/java/android/os/BatteryManager.java
@@ -18,6 +18,7 @@
import android.annotation.SystemService;
import android.content.Context;
+import android.content.Intent;
import android.hardware.health.V1_0.Constants;
import com.android.internal.app.IBatteryStats;
@@ -56,6 +57,14 @@
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
+ * Boolean field indicating whether the battery is currently considered to be
+ * low, that is whether a {@link Intent#ACTION_BATTERY_LOW} broadcast
+ * has been sent.
+ */
+ public static final String EXTRA_BATTERY_LOW = "battery_low";
+
+ /**
+ * Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* integer containing the maximum battery level.
*/
public static final String EXTRA_SCALE = "scale";
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
index ea0ed27..924e736 100644
--- a/services/core/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -619,6 +619,7 @@
intent.putExtra(BatteryManager.EXTRA_HEALTH, mHealthInfo.batteryHealth);
intent.putExtra(BatteryManager.EXTRA_PRESENT, mHealthInfo.batteryPresent);
intent.putExtra(BatteryManager.EXTRA_LEVEL, mHealthInfo.batteryLevel);
+ intent.putExtra(BatteryManager.EXTRA_BATTERY_LOW, mSentLowBatteryBroadcast);
intent.putExtra(BatteryManager.EXTRA_SCALE, BATTERY_SCALE);
intent.putExtra(BatteryManager.EXTRA_ICON_SMALL, icon);
intent.putExtra(BatteryManager.EXTRA_PLUGGED, mPlugType);