From b92e18e2dfa4f5b791a53b9c963cf2b9e1f1f25c Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Wed, 26 Jan 2011 21:58:28 -0800 Subject: [PATCH] Fix 3388705: Explicitly check for low battery level This fixes a bug in StatusView believed to be caused by seeing "invalid charger" update from BatteryService. The code normally relies on "interesting events", as determined by KeyguardUpdateMonitor. I believe something else is triggering an update (perhaps a SimStateChanged event) that updates the status without also updating StatusView.mShowingBatteryInfo and mPluggedIn. The safer way to do this is to explicitly check the battery level before telling the user the device needs to be charged. Change-Id: Ic39ed86c78a157dc9fbdef4d76a9c3db39ccafca --- .../internal/policy/impl/KeyguardUpdateMonitor.java | 2 +- .../src/com/android/internal/policy/impl/StatusView.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java index b225e56b3b723..e775dac88c894 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java @@ -62,7 +62,7 @@ public class KeyguardUpdateMonitor { static private final String TAG = "KeyguardUpdateMonitor"; static private final boolean DEBUG = false; - private static final int LOW_BATTERY_THRESHOLD = 20; + /* package */ static final int LOW_BATTERY_THRESHOLD = 20; private final Context mContext; diff --git a/policy/src/com/android/internal/policy/impl/StatusView.java b/policy/src/com/android/internal/policy/impl/StatusView.java index 4b91b6564bd4a..1732adb4cf715 100644 --- a/policy/src/com/android/internal/policy/impl/StatusView.java +++ b/policy/src/com/android/internal/policy/impl/StatusView.java @@ -193,12 +193,15 @@ class StatusView { mBatteryLevel)); } mStatus1.setCompoundDrawablesWithIntrinsicBounds(CHARGING_ICON, 0, 0, 0); - } else { + mStatus1.setVisibility(View.VISIBLE); + } else if (mBatteryLevel < KeyguardUpdateMonitor.LOW_BATTERY_THRESHOLD) { // Battery is low mStatus1.setText(getContext().getString(R.string.lockscreen_low_battery)); mStatus1.setCompoundDrawablesWithIntrinsicBounds(BATTERY_LOW_ICON, 0, 0, 0); + mStatus1.setVisibility(View.VISIBLE); + } else { + mStatus1.setVisibility(View.INVISIBLE); } - mStatus1.setVisibility(View.VISIBLE); } else { // nothing specific to show; show help message and icon, if provided if (mHelpMessageId != 0) {