diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1110553bc78..72eb66b1142 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3625,6 +3625,8 @@
Screen
+
+ Flashlight
Wi\u2011Fi
diff --git a/src/com/android/settings/fuelgauge/BatteryEntry.java b/src/com/android/settings/fuelgauge/BatteryEntry.java
index c2bf127eab7..e5272768ab5 100644
--- a/src/com/android/settings/fuelgauge/BatteryEntry.java
+++ b/src/com/android/settings/fuelgauge/BatteryEntry.java
@@ -150,6 +150,10 @@ public class BatteryEntry {
name = context.getResources().getString(R.string.power_screen);
iconId = R.drawable.ic_settings_display;
break;
+ case FLASHLIGHT:
+ name = context.getResources().getString(R.string.power_flashlight);
+ iconId = R.drawable.ic_settings_display;
+ break;
case APP:
name = sipper.packageWithHighestDrain;
break;
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
index daff7ea279a..60e73f5fbb4 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
@@ -17,6 +17,7 @@
package com.android.settings.fuelgauge;
import android.content.Intent;
+import android.graphics.Bitmap;
import android.graphics.DashPathEffect;
import android.os.BatteryManager;
import android.provider.Settings;
@@ -219,6 +220,9 @@ public class BatteryHistoryChart extends View {
final ArrayList mTimeLabels = new ArrayList();
final ArrayList mDateLabels = new ArrayList();
+ Bitmap mBitmap;
+ Canvas mCanvas;
+
static class TextAttrs {
ColorStateList textColor = null;
int textSize = 15;
@@ -339,6 +343,8 @@ public class BatteryHistoryChart extends View {
public BatteryHistoryChart(Context context, AttributeSet attrs) {
super(context, attrs);
+ if (DEBUG) Log.d(TAG, "New BatteryHistoryChart!");
+
mBatteryWarnLevel = mContext.getResources().getInteger(
com.android.internal.R.integer.config_lowBatteryWarningLevel);
mBatteryCriticalLevel = mContext.getResources().getInteger(
@@ -468,6 +474,8 @@ public class BatteryHistoryChart extends View {
mStats = stats;
mBatteryBroadcast = broadcast;
+ if (DEBUG) Log.d(TAG, "Setting stats...");
+
final long elapsedRealtimeUs = SystemClock.elapsedRealtime() * 1000;
long uSecTime = mStats.computeBatteryRealtime(elapsedRealtimeUs,
@@ -687,8 +695,12 @@ public class BatteryHistoryChart extends View {
return;
}
+ if (DEBUG) Log.d(TAG, "Rebuilding chart for: " + w + "x" + h);
+
mLastWidth = w;
mLastHeight = h;
+ mBitmap = null;
+ mCanvas = null;
int textHeight = mTextDescent - mTextAscent;
if (h > ((textHeight*10)+mChartMinHeight)) {
@@ -1025,6 +1037,13 @@ public class BatteryHistoryChart extends View {
endRoundTime = calEnd.getTimeInMillis();
if (startRoundTime < endRoundTime) {
addDateLabel(calStart, mLevelLeft, mLevelRight, isDayFirst);
+ Calendar calMid = Calendar.getInstance();
+ calMid.setTimeInMillis(startRoundTime + ((endRoundTime - startRoundTime) / 2));
+ calMid.set(Calendar.HOUR_OF_DAY, 0);
+ long calMidMillis = calMid.getTimeInMillis();
+ if (calMidMillis > startRoundTime && calMidMillis < endRoundTime) {
+ addDateLabel(calMid, mLevelLeft, mLevelRight, isDayFirst);
+ }
}
addDateLabel(calEnd, mLevelLeft, mLevelRight, isDayFirst);
}
@@ -1067,8 +1086,27 @@ public class BatteryHistoryChart extends View {
final int width = getWidth();
final int height = getHeight();
- if (DEBUG) Log.d(TAG, "onDraw: " + width + "x" + height);
+ //buildBitmap(width, height);
+ if (DEBUG) Log.d(TAG, "onDraw: " + width + "x" + height);
+ //canvas.drawBitmap(mBitmap, 0, 0, null);
+ drawChart(canvas, width, height);
+ }
+
+ void buildBitmap(int width, int height) {
+ if (mBitmap != null && width == mBitmap.getWidth() && height == mBitmap.getHeight()) {
+ return;
+ }
+
+ if (DEBUG) Log.d(TAG, "buildBitmap: " + width + "x" + height);
+
+ mBitmap = Bitmap.createBitmap(getResources().getDisplayMetrics(), width, height,
+ Bitmap.Config.ARGB_8888);
+ mCanvas = new Canvas(mBitmap);
+ drawChart(mCanvas, width, height);
+ }
+
+ void drawChart(Canvas canvas, int width, int height) {
final boolean layoutRtl = isLayoutRtl();
final int textStartX = layoutRtl ? width : 0;
final int textEndX = layoutRtl ? 0 : width;