diff options
author | David Morgan <dmorgan81@gmail.com> | 2012-02-10 15:16:30 -0500 |
---|---|---|
committer | Danny Baumann <dannybaumann@web.de> | 2012-02-13 12:32:25 +0100 |
commit | 4ddef3c70ee0798d1244e054301c2918fae224d0 (patch) | |
tree | 1bd3c1960d7bf49ad7fa65492b4f9f0db3343470 | |
parent | 3faa7c3869404e0c1e4f5e042b1931edbcdb51ca (diff) | |
download | frameworks_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-x | services/java/com/android/server/NotificationManagerService.java | 14 |
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 { |