summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Morgan <dmorgan81@gmail.com>2012-02-10 15:16:30 -0500
committerDanny Baumann <dannybaumann@web.de>2012-02-13 12:32:25 +0100
commit4ddef3c70ee0798d1244e054301c2918fae224d0 (patch)
tree1bd3c1960d7bf49ad7fa65492b4f9f0db3343470
parent3faa7c3869404e0c1e4f5e042b1931edbcdb51ca (diff)
downloadframeworks_base-4ddef3c70ee0798d1244e054301c2918fae224d0.zip
frameworks_base-4ddef3c70ee0798d1244e054301c2918fae224d0.tar.gz
frameworks_base-4ddef3c70ee0798d1244e054301c2918fae224d0.tar.bz2
Fix battery charging detection in NotificationManagerService
Battery charging should be detected via the status intent extra instead of merely checking to see if the phone is plugged. See r.cyanogenmod.com/7986 Change-Id: I39f6caf6183a866d6061b07e0f62c21a4df71aef
-rwxr-xr-xservices/java/com/android/server/NotificationManagerService.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java
index 785abb4..a2bfe78 100755
--- a/services/java/com/android/server/NotificationManagerService.java
+++ b/services/java/com/android/server/NotificationManagerService.java
@@ -430,12 +430,18 @@ public class NotificationManagerService extends INotificationManager.Stub
boolean queryRestart = false;
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
- boolean batteryCharging = (intent.getIntExtra("plugged", 0) != 0);
- int level = intent.getIntExtra("level", -1);
+ int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
+ BatteryManager.BATTERY_STATUS_UNKNOWN);
+ int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
+ boolean batteryCharging = status == BatteryManager.BATTERY_STATUS_CHARGING;
boolean batteryLow = (level >= 0 && level <= Power.LOW_BATTERY_THRESHOLD);
- int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN);
boolean batteryFull = (status == BatteryManager.BATTERY_STATUS_FULL || level >= 90);
+ /* also treat a full battery with connected charger as 'charging' */
+ if (batteryFull && intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0) {
+ batteryCharging = true;
+ }
+
if (batteryCharging != mBatteryCharging ||
batteryLow != mBatteryLow ||
batteryFull != mBatteryFull) {
@@ -1593,7 +1599,7 @@ public class NotificationManagerService extends INotificationManager.Stub
// Battery low always shows, other states only show if charging.
if (mBatteryLow) {
- int color = adjustForQuietHours(BATTERY_LOW_ARGB);
+ int color = adjustForQuietHours(BATTERY_LOW_ARGB);
if (mBatteryCharging) {
mBatteryLight.setColor(color);
} else {