diff options
author | Jim Miller <jaggies@google.com> | 2011-01-27 18:22:14 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-27 18:22:14 -0800 |
commit | 226e57563c3110aa688fc41f10b7a96cd21b6231 (patch) | |
tree | 7b9521b2fd762e8aefba79aa0ee08c70bb9f5c80 | |
parent | d350dc0492fab3614749955f5dcf21ec1c522b24 (diff) | |
parent | c0a1387f0fca91a1d66b0ca81d2e74100efa3df6 (diff) | |
download | frameworks_base-226e57563c3110aa688fc41f10b7a96cd21b6231.zip frameworks_base-226e57563c3110aa688fc41f10b7a96cd21b6231.tar.gz frameworks_base-226e57563c3110aa688fc41f10b7a96cd21b6231.tar.bz2 |
Merge "Fix 3391330: Use BATTERY_STATUS_FULL as "Charged" state [DO NOT MERGE]" into gingerbread
3 files changed, 31 insertions, 17 deletions
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java index b225e56..128d7bf 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java @@ -26,6 +26,7 @@ import static android.os.BatteryManager.BATTERY_STATUS_CHARGING; import static android.os.BatteryManager.BATTERY_STATUS_FULL; import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN; import android.media.AudioManager; +import android.os.BatteryManager; import android.os.Handler; import android.os.Message; import android.os.SystemClock; @@ -70,12 +71,12 @@ public class KeyguardUpdateMonitor { private boolean mKeyguardBypassEnabled; - private boolean mDevicePluggedIn; - private boolean mDeviceProvisioned; private int mBatteryLevel; + private int mBatteryStatus; + private CharSequence mTelephonyPlmn; private CharSequence mTelephonySpn; @@ -203,7 +204,7 @@ public class KeyguardUpdateMonitor { // take a guess to start mSimState = IccCard.State.READY; - mDevicePluggedIn = true; + mBatteryStatus = BATTERY_STATUS_FULL; mBatteryLevel = 100; mTelephonyPlmn = getDefaultPlmn(); @@ -283,13 +284,12 @@ public class KeyguardUpdateMonitor { /** * Handle {@link #MSG_BATTERY_UPDATE} */ - private void handleBatteryUpdate(int pluggedInStatus, int batteryLevel) { + private void handleBatteryUpdate(int batteryStatus, int batteryLevel) { if (DEBUG) Log.d(TAG, "handleBatteryUpdate"); - final boolean pluggedIn = isPluggedIn(pluggedInStatus); - - if (isBatteryUpdateInteresting(pluggedIn, batteryLevel)) { + if (isBatteryUpdateInteresting(batteryStatus, batteryLevel)) { + mBatteryStatus = batteryStatus; mBatteryLevel = batteryLevel; - mDevicePluggedIn = pluggedIn; + final boolean pluggedIn = isPluggedIn(batteryStatus);; for (int i = 0; i < mInfoCallbacks.size(); i++) { mInfoCallbacks.get(i).onRefreshBatteryInfo( shouldShowBatteryInfo(), pluggedIn, batteryLevel); @@ -336,26 +336,34 @@ public class KeyguardUpdateMonitor { return status == BATTERY_STATUS_CHARGING || status == BATTERY_STATUS_FULL; } - private boolean isBatteryUpdateInteresting(boolean pluggedIn, int batteryLevel) { + private boolean isBatteryUpdateInteresting(int batteryStatus, int batteryLevel) { // change in plug is always interesting - if (mDevicePluggedIn != pluggedIn) { + final boolean isPluggedIn = isPluggedIn(batteryStatus); + final boolean wasPluggedIn = isPluggedIn(mBatteryStatus); + final boolean stateChangedWhilePluggedIn = + wasPluggedIn == true && isPluggedIn == true && (mBatteryStatus != batteryStatus); + if (wasPluggedIn != isPluggedIn || stateChangedWhilePluggedIn) { return true; } // change in battery level while plugged in - if (pluggedIn && mBatteryLevel != batteryLevel) { + if (isPluggedIn && mBatteryLevel != batteryLevel) { return true; } - if (!pluggedIn) { + if (!isPluggedIn) { // not plugged in and below threshold - if (batteryLevel < LOW_BATTERY_THRESHOLD && batteryLevel != mBatteryLevel) { + if (isBatteryLow(batteryLevel) && batteryLevel != mBatteryLevel) { return true; } } return false; } + private boolean isBatteryLow(int batteryLevel) { + return batteryLevel < LOW_BATTERY_THRESHOLD; + } + /** * @param intent The intent with action {@link Telephony.Intents#SPN_STRINGS_UPDATED_ACTION} * @return The string to use for the plmn, or null if it should not be shown. @@ -485,7 +493,12 @@ public class KeyguardUpdateMonitor { } public boolean isDevicePluggedIn() { - return mDevicePluggedIn; + return isPluggedIn(mBatteryStatus); + } + + public boolean isDeviceCharged() { + return mBatteryStatus == BatteryManager.BATTERY_STATUS_FULL + || mBatteryLevel >= 100; // in case a particular device doesn't flag it } public int getBatteryLevel() { @@ -493,7 +506,7 @@ public class KeyguardUpdateMonitor { } public boolean shouldShowBatteryInfo() { - return mDevicePluggedIn || mBatteryLevel < LOW_BATTERY_THRESHOLD; + return isPluggedIn(mBatteryStatus) || isBatteryLow(mBatteryLevel); } public CharSequence getTelephonyPlmn() { diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/policy/src/com/android/internal/policy/impl/LockScreen.java index 5a20b93..85495dc 100644 --- a/policy/src/com/android/internal/policy/impl/LockScreen.java +++ b/policy/src/com/android/internal/policy/impl/LockScreen.java @@ -34,6 +34,7 @@ import android.widget.*; import android.graphics.drawable.Drawable; import android.util.Log; import android.media.AudioManager; +import android.os.BatteryManager; import android.os.SystemClock; import android.os.SystemProperties; import android.provider.Settings; @@ -417,7 +418,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM } if (mPluggedIn) { - if (mBatteryLevel >= 100) { + if (mUpdateMonitor.isDeviceCharged()) { mCharging = getContext().getString(R.string.lockscreen_charged); } else { mCharging = getContext().getString(R.string.lockscreen_plugged_in, mBatteryLevel); diff --git a/policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java b/policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java index ffd0a47..fe274f2 100644 --- a/policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java +++ b/policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java @@ -296,7 +296,7 @@ class PatternUnlockScreen extends LinearLayoutWithDefaultTouchRecepient } else if (mShowingBatteryInfo && mNextAlarm == null) { // battery only if (mPluggedIn) { - if (mBatteryLevel >= 100) { + if (mUpdateMonitor.isDeviceCharged()) { mStatus1.setText(getContext().getString(R.string.lockscreen_charged)); } else { mStatus1.setText(getContext().getString(R.string.lockscreen_plugged_in, mBatteryLevel)); |