diff options
9 files changed, 132 insertions, 207 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java b/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java index 2c9af05..b6b9b32 100644 --- a/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java +++ b/packages/SystemUI/src/com/android/systemui/quicksettings/BatteryTile.java @@ -3,7 +3,7 @@ package com.android.systemui.quicksettings; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; -import android.graphics.drawable.LevelListDrawable; +import android.os.BatteryManager; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; @@ -18,12 +18,9 @@ import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChang public class BatteryTile extends QuickSettingsTile implements BatteryStateChangeCallback{ private BatteryController mController; - private boolean charging = false; - private int batteryLevel = 0; - private Drawable batteryIcon; - - private LevelListDrawable batteryLevels; - private LevelListDrawable chargingBatteryLevels; + private int mBatteryLevel = 0; + private int mBatteryStatus; + private Drawable mBatteryIcon; public BatteryTile(Context context, QuickSettingsController qsc, BatteryController controller) { super(context, qsc, R.layout.quick_settings_tile_battery); @@ -52,9 +49,9 @@ public class BatteryTile extends QuickSettingsTile implements BatteryStateChange } @Override - public void onBatteryLevelChanged(int level, boolean pluggedIn) { - batteryLevel = level; - charging = pluggedIn; + public void onBatteryLevelChanged(int level, int status) { + mBatteryLevel = level; + mBatteryStatus = status; updateResources(); } @@ -65,29 +62,30 @@ public class BatteryTile extends QuickSettingsTile implements BatteryStateChange } private synchronized void updateTile() { - batteryLevels = (LevelListDrawable) mContext.getResources().getDrawable(R.drawable.qs_sys_battery); - chargingBatteryLevels = (LevelListDrawable) mContext.getResources().getDrawable(R.drawable.qs_sys_battery_charging); - batteryIcon = charging - ? chargingBatteryLevels : - batteryLevels; - if(batteryLevel == 100) { + final int drawableResId = mBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING + ? R.drawable.qs_sys_battery_charging : R.drawable.qs_sys_battery; + + mBatteryIcon = mContext.getResources().getDrawable(drawableResId); + + if (mBatteryStatus == BatteryManager.BATTERY_STATUS_FULL) { mLabel = mContext.getString(R.string.quick_settings_battery_charged_label); - }else{ - mLabel = charging - ? mContext.getString(R.string.quick_settings_battery_charging_label, - batteryLevel) - : mContext.getString(R.string.status_bar_settings_battery_meter_format, - batteryLevel); + } else if (mBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING) { + mLabel = mContext.getString(R.string.quick_settings_battery_charging_label, + mBatteryLevel); + } else { + mLabel = mContext.getString(R.string.status_bar_settings_battery_meter_format, + mBatteryLevel); } } @Override void updateQuickSettings() { TextView tv = (TextView) mTile.findViewById(R.id.battery_textview); - tv.setText(mLabel); ImageView iv = (ImageView) mTile.findViewById(R.id.battery_image); - iv.setImageDrawable(batteryIcon); - iv.setImageLevel(batteryLevel); + + tv.setText(mLabel); + iv.setImageDrawable(mBatteryIcon); + iv.setImageLevel(mBatteryLevel); } } diff --git a/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java b/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java index 4b09fd7..ce373fb 100644 --- a/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java +++ b/packages/SystemUI/src/com/android/systemui/quicksettings/DockBatteryTile.java @@ -3,7 +3,7 @@ package com.android.systemui.quicksettings; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; -import android.graphics.drawable.LevelListDrawable; +import android.os.BatteryManager; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; @@ -18,13 +18,10 @@ import com.android.systemui.statusbar.policy.DockBatteryController.DockBatterySt public class DockBatteryTile extends QuickSettingsTile implements DockBatteryStateChangeCallback { private DockBatteryController mController; private boolean mPresent = false; - private boolean mCharging = false; private int mDockBatteryLevel = 0; + private int mDockBatteryStatus; private Drawable mDockBatteryIcon; - private LevelListDrawable mDockBatteryLevels; - private LevelListDrawable mChargingDockBatteryLevels; - public DockBatteryTile(Context context, QuickSettingsController qsc, DockBatteryController controller) { super(context, qsc, R.layout.quick_settings_tile_dock_battery); @@ -52,9 +49,9 @@ public class DockBatteryTile extends QuickSettingsTile implements DockBatterySta } @Override - public void onDockBatteryLevelChanged(int level, boolean present, boolean pluggedIn) { + public void onDockBatteryLevelChanged(int level, boolean present, int status) { mDockBatteryLevel = level; - mCharging = pluggedIn; + mDockBatteryStatus = status; mPresent = present; updateResources(); } @@ -66,20 +63,20 @@ public class DockBatteryTile extends QuickSettingsTile implements DockBatterySta } private synchronized void updateTile() { + int drawableResId = mDockBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING + ? R.drawable.qs_sys_dock_battery_charging : R.drawable.qs_sys_dock_battery; + mTile.setVisibility(mPresent ? View.VISIBLE : View.GONE); - mDockBatteryLevels = (LevelListDrawable) mContext.getResources().getDrawable(R.drawable.qs_sys_dock_battery); - mChargingDockBatteryLevels = (LevelListDrawable) mContext.getResources().getDrawable(R.drawable.qs_sys_dock_battery_charging); - mDockBatteryIcon = mCharging - ? mChargingDockBatteryLevels : - mDockBatteryLevels; - if(mDockBatteryLevel == 100) { + mDockBatteryIcon = mContext.getResources().getDrawable(drawableResId); + + if (mDockBatteryStatus == BatteryManager.BATTERY_STATUS_FULL) { mLabel = mContext.getString(R.string.quick_settings_battery_charged_label); - }else{ - mLabel = mCharging - ? mContext.getString(R.string.quick_settings_battery_charging_label, - mDockBatteryLevel) - : mContext.getString(R.string.status_bar_settings_battery_meter_format, - mDockBatteryLevel); + } else if (mDockBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING) { + mLabel = mContext.getString(R.string.quick_settings_battery_charging_label, + mDockBatteryLevel); + } else { + mLabel = mContext.getString(R.string.status_bar_settings_battery_meter_format, + mDockBatteryLevel); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 84578f6..1c21f22 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -98,6 +98,8 @@ import com.android.systemui.statusbar.NotificationData.Entry; import com.android.systemui.statusbar.SignalClusterView; import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.policy.BatteryController; +import com.android.systemui.statusbar.policy.CircleBattery; +import com.android.systemui.statusbar.policy.CircleDockBattery; import com.android.systemui.statusbar.policy.DockBatteryController; import com.android.systemui.statusbar.policy.BluetoothController; import com.android.systemui.statusbar.policy.DateView; @@ -607,6 +609,10 @@ public class PhoneStatusBar extends BaseStatusBar { mBatteryController.addIconView((ImageView)mStatusBarView.findViewById(R.id.battery)); mBatteryController.addLabelView((TextView)mStatusBarView.findViewById(R.id.battery_text)); + final CircleBattery circleBattery = + (CircleBattery) mStatusBarView.findViewById(R.id.circle_battery); + mBatteryController.addStateChangedCallback(circleBattery); + // Dock Battery support mHasDockBattery = mContext.getResources().getBoolean( com.android.internal.R.bool.config_hasDockBattery); @@ -617,6 +623,12 @@ public class PhoneStatusBar extends BaseStatusBar { (ImageView)mStatusBarView.findViewById(R.id.dock_battery)); mDockBatteryController.addLabelView( (TextView)mStatusBarView.findViewById(R.id.dock_battery_text)); + + final CircleDockBattery dockCircleBattery = + (CircleDockBattery) mStatusBarView.findViewById(R.id.circle_dock_battery); + final DockBatteryController.DockBatteryStateChangeCallback callback = + (DockBatteryController.DockBatteryStateChangeCallback) dockCircleBattery; + mDockBatteryController.addStateChangedCallback(callback); } else { // Remove dock battery icons if device doesn't hava dock battery support View v = mStatusBarView.findViewById(R.id.dock_battery); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java index 72938c4..5bb5f5f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java @@ -31,6 +31,7 @@ import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.hardware.display.WifiDisplayStatus; import android.net.ConnectivityManager; +import android.os.BatteryManager; import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; @@ -509,9 +510,9 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } // BatteryController callback @Override - public void onBatteryLevelChanged(int level, boolean pluggedIn) { + public void onBatteryLevelChanged(int level, int status) { mBatteryState.batteryLevel = level; - mBatteryState.pluggedIn = pluggedIn; + mBatteryState.pluggedIn = status == BatteryManager.BATTERY_STATUS_CHARGING; mBatteryCallback.refreshView(mBatteryTile, mBatteryState); } void refreshBatteryTile() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java index 56cad64..0ed886e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java @@ -86,7 +86,7 @@ public class BatteryController extends BroadcastReceiver { new ArrayList<BatteryStateChangeCallback>(); public interface BatteryStateChangeCallback { - public void onBatteryLevelChanged(int level, boolean pluggedIn); + public void onBatteryLevelChanged(int level, int status); } public BatteryController(Context context) { @@ -120,7 +120,7 @@ public class BatteryController extends BroadcastReceiver { public void addStateChangedCallback(BatteryStateChangeCallback cb) { mChangeCallbacks.add(cb); // trigger initial update - cb.onBatteryLevelChanged(getBatteryLevel(), isBatteryStatusCharging()); + cb.onBatteryLevelChanged(getBatteryLevel(), getBatteryStatus()); } public void removeStateChangedCallback(BatteryStateChangeCallback cb) { @@ -209,7 +209,7 @@ public class BatteryController extends BroadcastReceiver { } for (BatteryStateChangeCallback cb : mChangeCallbacks) { - cb.onBatteryLevelChanged(level, isBatteryStatusCharging()); + cb.onBatteryLevelChanged(level, getBatteryStatus()); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java index 9aeb200..c4bd4b4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java @@ -41,28 +41,18 @@ import android.widget.ImageView; import com.android.internal.R; -/*** - * Note about CircleBattery Implementation: - * - * Unfortunately, we cannot use BatteryController here, - * since communication between controller and this view is not possible without - * huge changes. As a result, this Class is doing everything by itself, - * monitoring battery level and battery settings. - */ - -public class CircleBattery extends ImageView { +public class CircleBattery extends ImageView implements BatteryController.BatteryStateChangeCallback { private Handler mHandler; private Context mContext; - private BatteryReceiver mBatteryReceiver = null; private SettingsObserver mObserver; // state variables private boolean mAttached; // whether or not attached to a window private boolean mActivated; // whether or not activated due to system settings private boolean mPercentage; // whether or not to show percentage number - private boolean mBatteryPlugged;// whether or not battery is currently plugged private int mBatteryStatus; // current battery status private int mLevel; // current battery level + private int mWarningLevel; // battery level under which circle should become red private int mAnimOffset; // current level of charging animation private boolean mIsAnimating; // stores charge-animation status to reliably remove callbacks @@ -73,7 +63,7 @@ public class CircleBattery extends ImageView { private Float mTextLeftX; // precalculated x position for drawText() to appear centered private Float mTextY; // precalculated y position for drawText() to appear vertical-centered - // quiet a lot of paint variables. helps to move cpu-usage from actual drawing to initialization + // quite a lot of paint variables. helps to move cpu-usage from actual drawing to initialization private Paint mPaintFont; private Paint mPaintGray; private Paint mPaintSystem; @@ -82,7 +72,7 @@ public class CircleBattery extends ImageView { // runnable to invalidate view via mHandler.postDelayed() call private final Runnable mInvalidate = new Runnable() { public void run() { - if(mActivated && mAttached) { + if (mActivated && mAttached) { invalidate(); } } @@ -107,74 +97,14 @@ public class CircleBattery extends ImageView { @Override public void onChange(boolean selfChange) { - int batteryStyle = (Settings.System.getInt(mContext.getContentResolver(), - Settings.System.STATUS_BAR_BATTERY, 0)); + int batteryStyle = Settings.System.getInt(mContext.getContentResolver(), + Settings.System.STATUS_BAR_BATTERY, 0); - mActivated = (batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE || batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE_PERCENT); + mActivated = (batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE + || batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE_PERCENT); mPercentage = (batteryStyle == BatteryController.BATTERY_STYLE_CIRCLE_PERCENT); - setVisibility(mActivated && isBatteryPresent() ? View.VISIBLE : View.GONE); - if (mBatteryReceiver != null) { - mBatteryReceiver.updateRegistration(); - } - - if (mActivated && mAttached) { - invalidate(); - } - } - } - - // keeps track of current battery level and charger-plugged-state - class BatteryReceiver extends BroadcastReceiver { - private boolean mIsRegistered = false; - - public BatteryReceiver(Context context) { - } - - @Override - public void onReceive(Context context, Intent intent) { - final String action = intent.getAction(); - if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { - onBatteryStatusChange(intent); - - int visibility = mActivated && isBatteryPresent() ? View.VISIBLE : View.GONE; - if (getVisibility() != visibility) { - setVisibility(visibility); - } - - if (mActivated && mAttached) { - LayoutParams l = getLayoutParams(); - l.width = mCircleSize + getPaddingLeft(); - setLayoutParams(l); - - invalidate(); - } - } - } - - private void registerSelf() { - if (!mIsRegistered) { - mIsRegistered = true; - - IntentFilter filter = new IntentFilter(); - filter.addAction(Intent.ACTION_BATTERY_CHANGED); - mContext.registerReceiver(mBatteryReceiver, filter); - } - } - - private void unregisterSelf() { - if (mIsRegistered) { - mIsRegistered = false; - mContext.unregisterReceiver(this); - } - } - - private void updateRegistration() { - if (mActivated && mAttached) { - registerSelf(); - } else { - unregisterSelf(); - } + updateVisibility(); } } @@ -196,7 +126,6 @@ public class CircleBattery extends ImageView { mHandler = new Handler(); mObserver = new SettingsObserver(mHandler); - mBatteryReceiver = new BatteryReceiver(mContext); // initialize and setup all paint variables // stroke width is later set in initSizeBasedStuff() @@ -225,38 +154,8 @@ public class CircleBattery extends ImageView { // font needs some extra settings mPaintFont.setTextAlign(Align.CENTER); mPaintFont.setFakeBoldText(true); - } - - protected int getLevel() { - return mLevel; - } - - protected int getBatteryStatus() { - return mBatteryStatus; - } - protected boolean isBatteryPlugged() { - return mBatteryPlugged; - } - - protected boolean isBatteryPresent() { - // the battery widget always is shown. - return true; - } - - private boolean isBatteryStatusUnknown() { - return getBatteryStatus() == BatteryManager.BATTERY_STATUS_UNKNOWN; - } - - private boolean isBatteryStatusCharging() { - return getBatteryStatus() == BatteryManager.BATTERY_STATUS_CHARGING; - } - - protected void onBatteryStatusChange(Intent intent) { - mLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); - mBatteryPlugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0; - mBatteryStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS, - BatteryManager.BATTERY_STATUS_UNKNOWN); + mWarningLevel = context.getResources().getInteger(R.integer.config_lowBatteryWarningLevel); } @Override @@ -265,7 +164,6 @@ public class CircleBattery extends ImageView { if (!mAttached) { mAttached = true; mObserver.observe(); - mBatteryReceiver.updateRegistration(); mHandler.postDelayed(mInvalidate, 250); } } @@ -276,7 +174,6 @@ public class CircleBattery extends ImageView { if (mAttached) { mAttached = false; mObserver.unobserve(); - mBatteryReceiver.updateRegistration(); mRectLeft = null; // makes sure, size based variables get // recalculated on next attach mCircleSize = 0; // makes sure, mCircleSize is reread from icons on @@ -285,6 +182,21 @@ public class CircleBattery extends ImageView { } @Override + public void onBatteryLevelChanged(int level, int status) { + mLevel = level; + mBatteryStatus = status; + updateVisibility(); + } + + protected void updateVisibility() { + setVisibility(mActivated && isBatteryPresent() ? View.VISIBLE : View.GONE); + + if (mActivated && mAttached) { + invalidate(); + } + } + + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mCircleSize == 0) { initSizeMeasureIconHeight(); @@ -293,38 +205,43 @@ public class CircleBattery extends ImageView { setMeasuredDimension(mCircleSize + getPaddingLeft(), mCircleSize); } + protected int getBatteryLevel() { + return mLevel; + } + + protected int getBatteryStatus() { + return mBatteryStatus; + } + + protected boolean isBatteryPresent() { + return true; + } + protected void drawCircle(Canvas canvas, int level, int animOffset, float textX, RectF drawRect) { Paint usePaint = mPaintSystem; - int internalLevel = level; - boolean unknownStatus = isBatteryStatusUnknown(); - // turn red at 14% - same level android battery warning appears + boolean unknownStatus = getBatteryStatus() == BatteryManager.BATTERY_STATUS_UNKNOWN; + if (unknownStatus) { usePaint = mPaintGray; - internalLevel = 100; // Draw all the circle; - } else if (internalLevel <= 14) { + level = 100; // Draw all the circle; + } else if (level < mWarningLevel) { usePaint = mPaintRed; - } - - // pad circle percentage to 100% once it reaches 97% - // for one, the circle looks odd with a too small gap, - // for another, some phones never reach 100% due to hardware design - int padLevel = internalLevel; - if (padLevel >= 97) { - padLevel = 100; + } else if (getBatteryStatus() == BatteryManager.BATTERY_STATUS_FULL) { + level = 100; } // draw thin gray ring first canvas.drawArc(drawRect, 270, 360, false, mPaintGray); // draw colored arc representing charge level - canvas.drawArc(drawRect, 270 + animOffset, 3.6f * padLevel, false, usePaint); + canvas.drawArc(drawRect, 270 + animOffset, 3.6f * level, false, usePaint); // if chosen by options, draw percentage text in the middle // always skip percentage when 100, so layout doesnt break if (unknownStatus) { mPaintFont.setColor(usePaint.getColor()); canvas.drawText("?", textX, mTextY, mPaintFont); - } else if (internalLevel < 100 && mPercentage) { + } else if (level < 100 && mPercentage) { mPaintFont.setColor(usePaint.getColor()); - canvas.drawText(Integer.toString(internalLevel), textX, mTextY, mPaintFont); + canvas.drawText(Integer.toString(level), textX, mTextY, mPaintFont); } } @@ -337,18 +254,19 @@ public class CircleBattery extends ImageView { updateChargeAnim(); - drawCircle(canvas, - getLevel(), - (isBatteryStatusCharging() ? mAnimOffset : 0), mTextLeftX, mRectLeft); + boolean charging = getBatteryStatus() == BatteryManager.BATTERY_STATUS_CHARGING; + int offset = charging ? mAnimOffset : 0; + + drawCircle(canvas, getBatteryLevel(), offset, mTextLeftX, mRectLeft); } - /*** + /** * updates the animation counter * cares for timed callbacks to continue animation cycles * uses mInvalidate for delayed invalidate() callbacks */ private void updateChargeAnim() { - if (!isBatteryStatusCharging() || getLevel() >= 97) { + if (getBatteryStatus() != BatteryManager.BATTERY_STATUS_CHARGING) { if (mIsAnimating) { mIsAnimating = false; mAnimOffset = 0; @@ -369,7 +287,7 @@ public class CircleBattery extends ImageView { mHandler.postDelayed(mInvalidate, 50); } - /*** + /** * initializes all size dependent variables * sets stroke width and text size of all involved paints * YES! i think the method name is appropriate @@ -402,11 +320,11 @@ public class CircleBattery extends ImageView { onMeasure(0, 0); } - /*** + /** * we need to measure the size of the circle battery by checking another * resource. unfortunately, those resources have transparent/empty borders * so we have to count the used pixel manually and deduct the size from - * it. quiet complicated, but the only way to fit properly into the + * it. Quite complicated, but the only way to fit properly into the * statusbar for all resolutions */ private void initSizeMeasureIconHeight() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleDockBattery.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleDockBattery.java index dba10b8..b0fe80a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleDockBattery.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleDockBattery.java @@ -34,11 +34,11 @@ import com.android.systemui.R; * @see CircleBattery */ -public class CircleDockBattery extends CircleBattery { +public class CircleDockBattery extends CircleBattery + implements DockBatteryController.DockBatteryStateChangeCallback { private int mLevel; private int mDockBatteryStatus = BatteryManager.BATTERY_STATUS_UNKNOWN; - private boolean mBatteryPlugged = false; private boolean mBatteryPresent = false; private final Context mContext; @@ -94,18 +94,21 @@ public class CircleDockBattery extends CircleBattery { } @Override - protected int getLevel() { - return mLevel; + public void onDockBatteryLevelChanged(int level, boolean present, int status) { + mLevel = level; + mBatteryPresent = present; + mDockBatteryStatus = status; + updateVisibility(); } @Override - protected int getBatteryStatus() { - return mDockBatteryStatus; + protected int getBatteryLevel() { + return mLevel; } @Override - protected boolean isBatteryPlugged() { - return mBatteryPlugged; + protected int getBatteryStatus() { + return mDockBatteryStatus; } @Override @@ -114,16 +117,6 @@ public class CircleDockBattery extends CircleBattery { } @Override - protected void onBatteryStatusChange(Intent intent) { - mLevel = intent.getIntExtra(BatteryManager.EXTRA_DOCK_LEVEL, 0); - mDockBatteryStatus = intent.getIntExtra( - BatteryManager.EXTRA_DOCK_STATUS, - BatteryManager.BATTERY_STATUS_UNKNOWN); - mBatteryPlugged = intent.getIntExtra(BatteryManager.EXTRA_DOCK_PLUGGED, 0) != 0; - mBatteryPresent = intent.getBooleanExtra(BatteryManager.EXTRA_DOCK_PRESENT, false); - } - - @Override protected void drawCircle(Canvas canvas, int level, int animOffset, float textX, RectF drawRect) { super.drawCircle(canvas, level, animOffset, textX, drawRect); if (mDockIcon != null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java index cde5e2c..265dfd2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DockBatteryController.java @@ -62,7 +62,7 @@ public class DockBatteryController extends BatteryController { } for (DockBatteryStateChangeCallback cb : mChangeCallbacks) { - cb.onDockBatteryLevelChanged(getBatteryLevel(), isBatteryPresent(), isBatteryStatusCharging()); + cb.onDockBatteryLevelChanged(getBatteryLevel(), isBatteryPresent(), getBatteryStatus()); } } @@ -70,13 +70,13 @@ public class DockBatteryController extends BatteryController { new ArrayList<DockBatteryStateChangeCallback>(); public interface DockBatteryStateChangeCallback { - public void onDockBatteryLevelChanged(int level, boolean present, boolean pluggedIn); + public void onDockBatteryLevelChanged(int level, boolean present, int status); } public void addStateChangedCallback(DockBatteryStateChangeCallback cb) { mChangeCallbacks.add(cb); // trigger initial update - cb.onDockBatteryLevelChanged(getBatteryLevel(), isBatteryPresent(), isBatteryStatusCharging()); + cb.onDockBatteryLevelChanged(getBatteryLevel(), isBatteryPresent(), getBatteryStatus()); } public void removeStateChangedCallback(DockBatteryStateChangeCallback cb) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java index 3e7aa3a..5d37af2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -75,6 +75,7 @@ import com.android.systemui.statusbar.SignalClusterView; import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BluetoothController; +import com.android.systemui.statusbar.policy.CircleBattery; import com.android.systemui.statusbar.policy.CompatModeButton; import com.android.systemui.statusbar.policy.LocationController; import com.android.systemui.statusbar.policy.NetworkController; @@ -549,6 +550,11 @@ public class TabletStatusBar extends BaseStatusBar implements mBatteryController = new BatteryController(mContext); mBatteryController.addIconView((ImageView)sb.findViewById(R.id.battery)); + + final CircleBattery circleBattery = + (CircleBattery) sb.findViewById(R.id.circle_battery); + mBatteryController.addStateChangedCallback(circleBattery); + mBluetoothController = new BluetoothController(mContext); mBluetoothController.addIconView((ImageView)sb.findViewById(R.id.bluetooth)); |