Skip to content

Commit 226e575

Browse files
Jim MillerAndroid (Google) Code Review
authored andcommitted
Merge "Fix 3391330: Use BATTERY_STATUS_FULL as "Charged" state [DO NOT MERGE]" into gingerbread
2 parents d350dc0 + c0a1387 commit 226e575

File tree

3 files changed

+31
-17
lines changed

3 files changed

+31
-17
lines changed

policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import static android.os.BatteryManager.BATTERY_STATUS_FULL;
2727
import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
2828
import android.media.AudioManager;
29+
import android.os.BatteryManager;
2930
import android.os.Handler;
3031
import android.os.Message;
3132
import android.os.SystemClock;
@@ -70,12 +71,12 @@ public class KeyguardUpdateMonitor {
7071

7172
private boolean mKeyguardBypassEnabled;
7273

73-
private boolean mDevicePluggedIn;
74-
7574
private boolean mDeviceProvisioned;
7675

7776
private int mBatteryLevel;
7877

78+
private int mBatteryStatus;
79+
7980
private CharSequence mTelephonyPlmn;
8081
private CharSequence mTelephonySpn;
8182

@@ -203,7 +204,7 @@ public void onChange(boolean selfChange) {
203204

204205
// take a guess to start
205206
mSimState = IccCard.State.READY;
206-
mDevicePluggedIn = true;
207+
mBatteryStatus = BATTERY_STATUS_FULL;
207208
mBatteryLevel = 100;
208209

209210
mTelephonyPlmn = getDefaultPlmn();
@@ -283,13 +284,12 @@ private void handleTimeUpdate() {
283284
/**
284285
* Handle {@link #MSG_BATTERY_UPDATE}
285286
*/
286-
private void handleBatteryUpdate(int pluggedInStatus, int batteryLevel) {
287+
private void handleBatteryUpdate(int batteryStatus, int batteryLevel) {
287288
if (DEBUG) Log.d(TAG, "handleBatteryUpdate");
288-
final boolean pluggedIn = isPluggedIn(pluggedInStatus);
289-
290-
if (isBatteryUpdateInteresting(pluggedIn, batteryLevel)) {
289+
if (isBatteryUpdateInteresting(batteryStatus, batteryLevel)) {
290+
mBatteryStatus = batteryStatus;
291291
mBatteryLevel = batteryLevel;
292-
mDevicePluggedIn = pluggedIn;
292+
final boolean pluggedIn = isPluggedIn(batteryStatus);;
293293
for (int i = 0; i < mInfoCallbacks.size(); i++) {
294294
mInfoCallbacks.get(i).onRefreshBatteryInfo(
295295
shouldShowBatteryInfo(), pluggedIn, batteryLevel);
@@ -336,26 +336,34 @@ private boolean isPluggedIn(int status) {
336336
return status == BATTERY_STATUS_CHARGING || status == BATTERY_STATUS_FULL;
337337
}
338338

339-
private boolean isBatteryUpdateInteresting(boolean pluggedIn, int batteryLevel) {
339+
private boolean isBatteryUpdateInteresting(int batteryStatus, int batteryLevel) {
340340
// change in plug is always interesting
341-
if (mDevicePluggedIn != pluggedIn) {
341+
final boolean isPluggedIn = isPluggedIn(batteryStatus);
342+
final boolean wasPluggedIn = isPluggedIn(mBatteryStatus);
343+
final boolean stateChangedWhilePluggedIn =
344+
wasPluggedIn == true && isPluggedIn == true && (mBatteryStatus != batteryStatus);
345+
if (wasPluggedIn != isPluggedIn || stateChangedWhilePluggedIn) {
342346
return true;
343347
}
344348

345349
// change in battery level while plugged in
346-
if (pluggedIn && mBatteryLevel != batteryLevel) {
350+
if (isPluggedIn && mBatteryLevel != batteryLevel) {
347351
return true;
348352
}
349353

350-
if (!pluggedIn) {
354+
if (!isPluggedIn) {
351355
// not plugged in and below threshold
352-
if (batteryLevel < LOW_BATTERY_THRESHOLD && batteryLevel != mBatteryLevel) {
356+
if (isBatteryLow(batteryLevel) && batteryLevel != mBatteryLevel) {
353357
return true;
354358
}
355359
}
356360
return false;
357361
}
358362

363+
private boolean isBatteryLow(int batteryLevel) {
364+
return batteryLevel < LOW_BATTERY_THRESHOLD;
365+
}
366+
359367
/**
360368
* @param intent The intent with action {@link Telephony.Intents#SPN_STRINGS_UPDATED_ACTION}
361369
* @return The string to use for the plmn, or null if it should not be shown.
@@ -485,15 +493,20 @@ public boolean isKeyguardBypassEnabled() {
485493
}
486494

487495
public boolean isDevicePluggedIn() {
488-
return mDevicePluggedIn;
496+
return isPluggedIn(mBatteryStatus);
497+
}
498+
499+
public boolean isDeviceCharged() {
500+
return mBatteryStatus == BatteryManager.BATTERY_STATUS_FULL
501+
|| mBatteryLevel >= 100; // in case a particular device doesn't flag it
489502
}
490503

491504
public int getBatteryLevel() {
492505
return mBatteryLevel;
493506
}
494507

495508
public boolean shouldShowBatteryInfo() {
496-
return mDevicePluggedIn || mBatteryLevel < LOW_BATTERY_THRESHOLD;
509+
return isPluggedIn(mBatteryStatus) || isBatteryLow(mBatteryLevel);
497510
}
498511

499512
public CharSequence getTelephonyPlmn() {

policy/src/com/android/internal/policy/impl/LockScreen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import android.graphics.drawable.Drawable;
3535
import android.util.Log;
3636
import android.media.AudioManager;
37+
import android.os.BatteryManager;
3738
import android.os.SystemClock;
3839
import android.os.SystemProperties;
3940
import android.provider.Settings;
@@ -417,7 +418,7 @@ private void refreshBatteryStringAndIcon() {
417418
}
418419

419420
if (mPluggedIn) {
420-
if (mBatteryLevel >= 100) {
421+
if (mUpdateMonitor.isDeviceCharged()) {
421422
mCharging = getContext().getString(R.string.lockscreen_charged);
422423
} else {
423424
mCharging = getContext().getString(R.string.lockscreen_plugged_in, mBatteryLevel);

policy/src/com/android/internal/policy/impl/PatternUnlockScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ private void updateStatusLines() {
296296
} else if (mShowingBatteryInfo && mNextAlarm == null) {
297297
// battery only
298298
if (mPluggedIn) {
299-
if (mBatteryLevel >= 100) {
299+
if (mUpdateMonitor.isDeviceCharged()) {
300300
mStatus1.setText(getContext().getString(R.string.lockscreen_charged));
301301
} else {
302302
mStatus1.setText(getContext().getString(R.string.lockscreen_plugged_in, mBatteryLevel));

0 commit comments

Comments
 (0)