diff options
| author | 2013-10-14 10:27:45 -0400 | |
|---|---|---|
| committer | 2013-10-14 10:27:45 -0400 | |
| commit | 05021e5e47132799efc3f8312fbca7cb20e6fc71 (patch) | |
| tree | 270d2550ea4c0731d0ef182e83c7a018775c316d | |
| parent | e1db0dd089456d80a2872fe1a12a179f39240aec (diff) | |
Don't show [!] battery at boot.
Defense in depth:
1. If there's a sticky battery broadcast waiting around for
us, apply its information immediately.
2. If for some reason there is no battery information,
just don't draw anything.
Bug: 11208146
Change-Id: I43e4b55a90a4ca619816ad0315e329f88b529581
| -rwxr-xr-x | packages/SystemUI/src/com/android/systemui/BatteryMeterView.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java index 150f13280cd6..b6e03e143c7e 100755 --- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java @@ -69,8 +69,10 @@ public class BatteryMeterView extends View implements DemoMode { private final Rect mBoltFrame = new Rect(); private class BatteryTracker extends BroadcastReceiver { + public static final int UNKNOWN_LEVEL = -1; + // current battery status - int level; + int level = UNKNOWN_LEVEL; String percentStr; int plugType; boolean plugged; @@ -148,7 +150,11 @@ public class BatteryMeterView extends View implements DemoMode { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(ACTION_LEVEL_TEST); - getContext().registerReceiver(mTracker, filter); + final Intent sticky = getContext().registerReceiver(mTracker, filter); + if (sticky != null) { + // preload the battery level + mTracker.onReceive(getContext(), sticky); + } } @Override @@ -256,6 +262,9 @@ public class BatteryMeterView extends View implements DemoMode { public void draw(Canvas c) { BatteryTracker tracker = mDemoMode ? mDemoTracker : mTracker; final int level = tracker.level; + + if (level == BatteryTracker.UNKNOWN_LEVEL) return; + float drawFrac = (float) level / 100f; final int pt = getPaddingTop(); final int pl = getPaddingLeft(); |