diff --git a/src/com/android/settings/fuelgauge/BatteryChartView.java b/src/com/android/settings/fuelgauge/BatteryChartView.java index 8e83cb9ec49..e2e7f8f7519 100644 --- a/src/com/android/settings/fuelgauge/BatteryChartView.java +++ b/src/com/android/settings/fuelgauge/BatteryChartView.java @@ -111,6 +111,10 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick /** Sets all levels value to draw the trapezoid shape */ public void setLevels(int[] levels) { + if (levels == null) { + mLevels = null; + return; + } // We should provide trapezoid count + 1 data to draw all trapezoids. mLevels = levels.length == mTrapezoidCount + 1 ? levels : null; setClickable(false); diff --git a/src/com/android/settings/fuelgauge/BatteryHistEntry.java b/src/com/android/settings/fuelgauge/BatteryHistEntry.java index 6130fffc4a0..d83d8149691 100644 --- a/src/com/android/settings/fuelgauge/BatteryHistEntry.java +++ b/src/com/android/settings/fuelgauge/BatteryHistEntry.java @@ -16,6 +16,7 @@ package com.android.settings.fuelgauge; import android.content.ContentValues; import android.database.Cursor; import android.os.BatteryConsumer; +import android.util.Log; import java.time.Duration; @@ -310,6 +311,14 @@ public class BatteryHistEntry { lowerHistEntry == null ? 0 : lowerHistEntry.mBackgroundUsageTimeInMs, upperHistEntry.mBackgroundUsageTimeInMs, ratio); + // Checks whether there is any abnoaml cases! + if (upperHistEntry.mConsumePower < consumePower + || upperHistEntry.mForegroundUsageTimeInMs < foregroundUsageTimeInMs + || upperHistEntry.mBackgroundUsageTimeInMs < backgroundUsageTimeInMs) { + Log.w(TAG, String.format( + "abnormal interpolation:\nupper:%s\nlower:%s", + upperHistEntry, lowerHistEntry)); + } final double batteryLevel = lowerHistEntry == null ? upperHistEntry.mBatteryLevel