diff options
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/BatteryMeterView.java')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/BatteryMeterView.java | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java index 6864ea185834..200679432200 100644 --- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java @@ -40,7 +40,6 @@ import android.util.TypedValue; import android.view.ContextThemeWrapper; import android.view.Gravity; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; @@ -56,7 +55,6 @@ import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; -import com.android.systemui.statusbar.policy.IconLogger; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService.Tunable; import com.android.systemui.util.Utils.DisableStateTracker; @@ -71,11 +69,12 @@ public class BatteryMeterView extends LinearLayout implements @Retention(SOURCE) - @IntDef({MODE_DEFAULT, MODE_ON, MODE_OFF}) + @IntDef({MODE_DEFAULT, MODE_ON, MODE_OFF, MODE_ESTIMATE}) public @interface BatteryPercentMode {} public static final int MODE_DEFAULT = 0; public static final int MODE_ON = 1; public static final int MODE_OFF = 2; + public static final int MODE_ESTIMATE = 3; private final BatteryMeterDrawableBase mDrawable; private final String mSlotBattery; @@ -93,6 +92,7 @@ public class BatteryMeterView extends LinearLayout implements // Some places may need to show the battery conditionally, and not obey the tuner private boolean mIgnoreTunerUpdates; private boolean mIsSubscribedForTunerUpdates; + private boolean mCharging; private int mDarkModeBackgroundColor; private int mDarkModeFillColor; @@ -276,9 +276,6 @@ public class BatteryMeterView extends LinearLayout implements public void onTuningChanged(String key, String newValue) { if (StatusBarIconController.ICON_BLACKLIST.equals(key)) { ArraySet<String> icons = StatusBarIconController.getIconBlacklist(newValue); - boolean hidden = icons.contains(mSlotBattery); - Dependency.get(IconLogger.class).onIconVisibility(mSlotBattery, !hidden); - setVisibility(hidden ? View.GONE : View.VISIBLE); } } @@ -308,6 +305,7 @@ public class BatteryMeterView extends LinearLayout implements public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) { mDrawable.setBatteryLevel(level); mDrawable.setCharging(pluggedIn); + mCharging = pluggedIn; mLevel = level; updatePercentText(); setContentDescription( @@ -337,9 +335,19 @@ public class BatteryMeterView extends LinearLayout implements } private void updatePercentText() { + if (mBatteryController == null) { + return; + } + if (mBatteryPercentView != null) { - mBatteryPercentView.setText( - NumberFormat.getPercentInstance().format(mLevel / 100f)); + if (mShowPercentMode == MODE_ESTIMATE && !mCharging) { + mBatteryController.getEstimatedTimeRemainingString((String estimate) -> { + mBatteryPercentView.setText(estimate); + }); + } else { + mBatteryPercentView.setText( + NumberFormat.getPercentInstance().format(mLevel / 100f)); + } } } @@ -350,7 +358,7 @@ public class BatteryMeterView extends LinearLayout implements SHOW_BATTERY_PERCENT, 0, mUser); if ((mShowPercentAvailable && systemSetting && mShowPercentMode != MODE_OFF) - || mShowPercentMode == MODE_ON) { + || mShowPercentMode == MODE_ON || mShowPercentMode == MODE_ESTIMATE) { if (!showing) { mBatteryPercentView = loadPercentView(); if (mTextColor != 0) mBatteryPercentView.setTextColor(mTextColor); |