Loading res/drawable/ic_settings_camera.xml 0 → 100644 +33 −0 Original line number Diff line number Diff line <!-- Copyright (C) 2015 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="48" android:viewportHeight="48" android:autoMirrored="true"> <path android:fillColor="#000000" android:pathData="M18.8 21l9.53-16.51C26.94 4.18 25.49 4 24 4c-4.8 0-9.19 1.69-12.64 4.51l7.33 12.69.11-.2zm24.28-3c-1.84-5.85-6.3-10.52-11.99-12.68L23.77 18h19.31zm.52 2H28.62l.58 1 9.53 16.5C41.99 33.94 44 29.21 44 24c0-1.37-.14-2.71-.4-4zm-26.53 4l-7.8-13.5C6.01 14.06 4 18.79 4 24c0 1.37.14 2.71.4 4h14.98l-2.31-4zM4.92 30c1.84 5.85 6.3 10.52 11.99 12.68L24.23 30H4.92zm22.54 0l-7.8 13.51c1.4.31 2.85.49 4.34.49 4.8 0 9.19-1.69 12.64-4.51L29.31 26.8 27.46 30z"/> </vector> res/values/strings.xml +13 −0 Original line number Diff line number Diff line Loading @@ -4031,6 +4031,10 @@ <string name="battery_stats_screen_on_label">Screen on</string> <!-- [CHAR LIMIT=25] Label for battery stats gps on state graph --> <string name="battery_stats_gps_on_label">GPS on</string> <!-- [CHAR LIMIT=25] Label for battery stats camera on state graph --> <string name="battery_stats_camera_on_label">Camera on</string> <!-- [CHAR LIMIT=25] Label for battery stats flashlight on state graph --> <string name="battery_stats_flashlight_on_label">Flashlight on</string> <!-- [CHAR LIMIT=25] Label for battery stats wifi running state graph --> <string name="battery_stats_wifi_running_label">Wi\u2011Fi</string> <!-- [CHAR LIMIT=25] Label for battery stats wake lock state graph --> Loading Loading @@ -4062,6 +4066,8 @@ <string name="power_screen">Screen</string> <!-- Label for power consumed by the flashlight --> <string name="power_flashlight">Flashlight</string> <!-- Label for power consumed by the camera --> <string name="power_camera">Camera</string> <!-- Label for power consumed by Wi-Fi --> <string name="power_wifi">Wi\u2011Fi</string> <!-- Label for power consumed by Bluetooth --> Loading Loading @@ -4107,6 +4113,10 @@ <string name="usage_type_audio">Audio</string> <!-- Label for Video usage time --> <string name="usage_type_video">Video</string> <!-- Label for Camera usage time --> <string name="usage_type_camera">Camera</string> <!-- Label for Flashlight usage time --> <string name="usage_type_flashlight">Flashlight</string> <!-- Label for time that a feature has been on --> <string name="usage_type_on_time">Time on</string> <!-- Label for time that there was no cell coverage --> Loading Loading @@ -4147,6 +4157,9 @@ <!-- [CHAR_LIMIT=NONE] Description for power consumed by the flashlight --> <string name="battery_desc_flashlight">Battery used by the flashlight</string> <!-- [CHAR_LIMIT=NONE] Description for power consumed by the camera --> <string name="battery_desc_camera">Battery used by the camera</string> <!-- Description for power consumed by display --> <string name="battery_desc_display">Battery used by the display and backlight</string> <!-- Suggestion for reducing display power --> Loading src/com/android/settings/fuelgauge/BatteryEntry.java +4 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,10 @@ public class BatteryEntry { name = context.getResources().getString(R.string.power_overcounted); iconId = R.drawable.ic_power_system; break; case CAMERA: name = context.getResources().getString(R.string.power_camera); iconId = R.drawable.ic_settings_camera; break; } if (iconId > 0) { icon = context.getDrawable(iconId); Loading src/com/android/settings/fuelgauge/BatteryHistoryChart.java +87 −9 Original line number Diff line number Diff line Loading @@ -131,6 +131,8 @@ public class BatteryHistoryChart extends View { final Paint mChargingPaint = new Paint(); final Paint mScreenOnPaint = new Paint(); final Paint mGpsOnPaint = new Paint(); final Paint mFlashlightOnPaint = new Paint(); final Paint mCameraOnPaint = new Paint(); final Paint mWifiRunningPaint = new Paint(); final Paint mCpuRunningPaint = new Paint(); final Paint mDateLinePaint = new Paint(); Loading @@ -147,6 +149,8 @@ public class BatteryHistoryChart extends View { final Path mChargingPath = new Path(); final Path mScreenOnPath = new Path(); final Path mGpsOnPath = new Path(); final Path mFlashlightOnPath = new Path(); final Path mCameraOnPath = new Path(); final Path mWifiRunningPath = new Path(); final Path mCpuRunningPath = new Path(); final Path mDateLinePath = new Path(); Loading @@ -164,6 +168,8 @@ public class BatteryHistoryChart extends View { String mChargingLabel; String mScreenOnLabel; String mGpsOnLabel; String mCameraOnLabel; String mFlashlightOnLabel; String mWifiRunningLabel; String mCpuRunningLabel; String mPhoneSignalLabel; Loading Loading @@ -195,6 +201,8 @@ public class BatteryHistoryChart extends View { int mChargingOffset; int mScreenOnOffset; int mGpsOnOffset; int mFlashlightOnOffset; int mCameraOnOffset; int mWifiRunningOffset; int mCpuRunningOffset; int mPhoneSignalOffset; Loading @@ -217,6 +225,8 @@ public class BatteryHistoryChart extends View { boolean mHaveWifi; boolean mHaveGps; boolean mHavePhoneSignal; boolean mHaveCamera; boolean mHaveFlashlight; final ArrayList<TimeLabel> mTimeLabels = new ArrayList<TimeLabel>(); final ArrayList<DateLabel> mDateLabels = new ArrayList<DateLabel>(); Loading Loading @@ -367,6 +377,8 @@ public class BatteryHistoryChart extends View { mChargingPaint.setStyle(Paint.Style.STROKE); mScreenOnPaint.setStyle(Paint.Style.STROKE); mGpsOnPaint.setStyle(Paint.Style.STROKE); mCameraOnPaint.setStyle(Paint.Style.STROKE); mFlashlightOnPaint.setStyle(Paint.Style.STROKE); mWifiRunningPaint.setStyle(Paint.Style.STROKE); mCpuRunningPaint.setStyle(Paint.Style.STROKE); mPhoneSignalChart.setColors(com.android.settings.Utils.BADNESS_COLORS); Loading @@ -374,6 +386,8 @@ public class BatteryHistoryChart extends View { mDebugRectPaint.setStyle(Paint.Style.STROKE); mScreenOnPaint.setColor(0xFF009688); mGpsOnPaint.setColor(0xFF009688); mCameraOnPaint.setColor(0xFF009688); mFlashlightOnPaint.setColor(0xFF009688); mWifiRunningPaint.setColor(0xFF009688); mCpuRunningPaint.setColor(0xFF009688); mChargingPaint.setColor(0xFF009688); Loading Loading @@ -435,6 +449,8 @@ public class BatteryHistoryChart extends View { mBatteryBackgroundPaint.setColor(a.getInt(attr, 0)); mScreenOnPaint.setColor(a.getInt(attr, 0)); mGpsOnPaint.setColor(a.getInt(attr, 0)); mCameraOnPaint.setColor(a.getInt(attr, 0)); mFlashlightOnPaint.setColor(a.getInt(attr, 0)); mWifiRunningPaint.setColor(a.getInt(attr, 0)); mCpuRunningPaint.setColor(a.getInt(attr, 0)); mChargingPaint.setColor(a.getInt(attr, 0)); Loading Loading @@ -485,6 +501,8 @@ public class BatteryHistoryChart extends View { mChargingLabel = getContext().getString(R.string.battery_stats_charging_label); mScreenOnLabel = getContext().getString(R.string.battery_stats_screen_on_label); mGpsOnLabel = getContext().getString(R.string.battery_stats_gps_on_label); mCameraOnLabel = getContext().getString(R.string.battery_stats_camera_on_label); mFlashlightOnLabel = getContext().getString(R.string.battery_stats_flashlight_on_label); mWifiRunningLabel = getContext().getString(R.string.battery_stats_wifi_running_label); mCpuRunningLabel = getContext().getString(R.string.battery_stats_wake_lock_label); mPhoneSignalLabel = getContext().getString(R.string.battery_stats_phone_signal_label); Loading Loading @@ -599,6 +617,8 @@ public class BatteryHistoryChart extends View { mEndWallTime = mEndDataWallTime + (remainingTimeUs/1000); mNumHist = lastInteresting; mHaveGps = (aggrStates&HistoryItem.STATE_GPS_ON_FLAG) != 0; mHaveFlashlight = (aggrStates2&HistoryItem.STATE2_FLASHLIGHT_FLAG) != 0; mHaveCamera = (aggrStates2&HistoryItem.STATE2_CAMERA_FLAG) != 0; mHaveWifi = (aggrStates2&HistoryItem.STATE2_WIFI_RUNNING_FLAG) != 0 || (aggrStates&(HistoryItem.STATE_WIFI_FULL_LOCK_FLAG |HistoryItem.STATE_WIFI_MULTICAST_ON_FLAG Loading Loading @@ -628,7 +648,8 @@ public class BatteryHistoryChart extends View { void finishPaths(int w, int h, int levelh, int startX, int y, Path curLevelPath, int lastX, boolean lastCharging, boolean lastScreenOn, boolean lastGpsOn, boolean lastWifiRunning, boolean lastCpuRunning, Path lastPath) { boolean lastFlashlightOn, boolean lastCameraOn, boolean lastWifiRunning, boolean lastCpuRunning, Path lastPath) { if (curLevelPath != null) { if (lastX >= 0 && lastX < w) { if (lastPath != null) { Loading @@ -650,6 +671,12 @@ public class BatteryHistoryChart extends View { if (lastGpsOn) { mGpsOnPath.lineTo(w, h-mGpsOnOffset); } if (lastFlashlightOn) { mFlashlightOnPath.lineTo(w, h-mFlashlightOnOffset); } if (lastCameraOn) { mCameraOnPath.lineTo(w, h-mCameraOnOffset); } if (lastWifiRunning) { mWifiRunningPath.lineTo(w, h-mWifiRunningOffset); } Loading Loading @@ -720,6 +747,8 @@ public class BatteryHistoryChart extends View { mChargingPaint.setStrokeWidth(mLineWidth); mScreenOnPaint.setStrokeWidth(mLineWidth); mGpsOnPaint.setStrokeWidth(mLineWidth); mCameraOnPaint.setStrokeWidth(mLineWidth); mFlashlightOnPaint.setStrokeWidth(mLineWidth); mWifiRunningPaint.setStrokeWidth(mLineWidth); mCpuRunningPaint.setStrokeWidth(mLineWidth); mDebugRectPaint.setStrokeWidth(1); Loading @@ -732,15 +761,18 @@ public class BatteryHistoryChart extends View { mCpuRunningOffset = mScreenOnOffset + fullBarOffset; mWifiRunningOffset = mCpuRunningOffset + fullBarOffset; mGpsOnOffset = mWifiRunningOffset + (mHaveWifi ? fullBarOffset : 0); mPhoneSignalOffset = mGpsOnOffset + (mHaveGps ? fullBarOffset : 0); mFlashlightOnOffset = mGpsOnOffset + (mHaveGps ? fullBarOffset : 0); mCameraOnOffset = mFlashlightOnOffset + (mHaveFlashlight ? fullBarOffset : 0); mPhoneSignalOffset = mCameraOnOffset + (mHaveCamera ? fullBarOffset : 0); mLevelOffset = mPhoneSignalOffset + (mHavePhoneSignal ? fullBarOffset : 0) + mLineWidth*2 + mLineWidth/2; if (mHavePhoneSignal) { mPhoneSignalChart.init(w); } } else { mScreenOnOffset = mGpsOnOffset = mWifiRunningOffset = mCpuRunningOffset = mChargingOffset = mPhoneSignalOffset = 0; mScreenOnOffset = mGpsOnOffset = mCameraOnOffset = mFlashlightOnOffset = mWifiRunningOffset = mCpuRunningOffset = mChargingOffset = mPhoneSignalOffset = 0; mLevelOffset = fullBarOffset + mThinLineWidth*4; if (mHavePhoneSignal) { mPhoneSignalChart.init(0); Loading @@ -754,6 +786,8 @@ public class BatteryHistoryChart extends View { mBatCriticalPath.reset(); mScreenOnPath.reset(); mGpsOnPath.reset(); mFlashlightOnPath.reset(); mCameraOnPath.reset(); mWifiRunningPath.reset(); mCpuRunningPath.reset(); mChargingPath.reset(); Loading @@ -778,6 +812,7 @@ public class BatteryHistoryChart extends View { Path curLevelPath = null; Path lastLinePath = null; boolean lastCharging = false, lastScreenOn = false, lastGpsOn = false; boolean lastFlashlightOn = false, lastCameraOn = false; boolean lastWifiRunning = false, lastWifiSupplRunning = false, lastCpuRunning = false; int lastWifiSupplState = BatteryStats.WIFI_SUPPL_STATE_INVALID; final int N = mNumHist; Loading Loading @@ -871,6 +906,28 @@ public class BatteryHistoryChart extends View { lastGpsOn = gpsOn; } final boolean flashlightOn = (rec.states2&HistoryItem.STATE2_FLASHLIGHT_FLAG) != 0; if (flashlightOn != lastFlashlightOn) { if (flashlightOn) { mFlashlightOnPath.moveTo(x, h-mFlashlightOnOffset); } else { mFlashlightOnPath.lineTo(x, h-mFlashlightOnOffset); } lastFlashlightOn = flashlightOn; } final boolean cameraOn = (rec.states2&HistoryItem.STATE2_CAMERA_FLAG) != 0; if (cameraOn != lastCameraOn) { if (cameraOn) { mCameraOnPath.moveTo(x, h-mCameraOnOffset); } else { mCameraOnPath.lineTo(x, h-mCameraOnOffset); } lastCameraOn = cameraOn; } final int wifiSupplState = ((rec.states2&HistoryItem.STATE2_WIFI_SUPPL_STATE_MASK) >> HistoryItem.STATE2_WIFI_SUPPL_STATE_SHIFT); Loading Loading @@ -952,12 +1009,13 @@ public class BatteryHistoryChart extends View { || Math.abs(lastWalltime-curWalltime) > (60*60*1000))) { if (curLevelPath != null) { finishPaths(x+1, h, levelh, startX, lastY, curLevelPath, lastX, lastCharging, lastScreenOn, lastGpsOn, lastWifiRunning, lastCpuRunning, lastLinePath); lastCharging, lastScreenOn, lastGpsOn, lastFlashlightOn, lastCameraOn, lastWifiRunning, lastCpuRunning, lastLinePath); lastX = lastY = -1; curLevelPath = null; lastLinePath = null; lastCharging = lastScreenOn = lastGpsOn = lastCpuRunning = false; lastCharging = lastScreenOn = lastGpsOn = lastFlashlightOn = lastCameraOn = lastCpuRunning = false; } } } Loading Loading @@ -992,8 +1050,8 @@ public class BatteryHistoryChart extends View { } finishPaths(x, h, levelh, startX, lastY, curLevelPath, lastX, lastCharging, lastScreenOn, lastGpsOn, lastWifiRunning, lastCpuRunning, lastLinePath); lastCharging, lastScreenOn, lastGpsOn, lastFlashlightOn, lastCameraOn, lastWifiRunning, lastCpuRunning, lastLinePath); if (x < w) { // If we reserved room for the remaining time, create a final path to draw Loading Loading @@ -1237,6 +1295,18 @@ public class BatteryHistoryChart extends View { canvas.drawPath(mGpsOnPath, mGpsOnPaint); } } if (mHaveFlashlight) { if (!mFlashlightOnPath.isEmpty()) { if (DEBUG) Log.d(TAG, "Drawing flashlight path"); canvas.drawPath(mFlashlightOnPath, mFlashlightOnPaint); } } if (mHaveCamera) { if (!mCameraOnPath.isEmpty()) { if (DEBUG) Log.d(TAG, "Drawing camera path"); canvas.drawPath(mCameraOnPath, mCameraOnPaint); } } if (mHaveWifi) { if (!mWifiRunningPath.isEmpty()) { if (DEBUG) Log.d(TAG, "Drawing wifi path"); Loading @@ -1260,6 +1330,14 @@ public class BatteryHistoryChart extends View { canvas.drawText(mGpsOnLabel, textStartX, height - mGpsOnOffset - mTextDescent, mTextPaint); } if (mHaveFlashlight) { canvas.drawText(mFlashlightOnLabel, textStartX, height - mFlashlightOnOffset - mTextDescent, mTextPaint); } if (mHaveCamera) { canvas.drawText(mCameraOnLabel, textStartX, height - mCameraOnOffset - mTextDescent, mTextPaint); } if (mHaveWifi) { canvas.drawText(mWifiRunningLabel, textStartX, height - mWifiRunningOffset - mTextDescent, mTextPaint); Loading src/com/android/settings/fuelgauge/PowerUsageDetail.java +6 −1 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi R.string.battery_desc_users, R.string.battery_desc_unaccounted, R.string.battery_desc_overcounted, R.string.battery_desc_camera, }; public static void startBatteryDetailPage( Loading Loading @@ -126,6 +127,8 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi R.string.usage_type_data_wifi_send, R.string.usage_type_audio, R.string.usage_type_video, R.string.usage_type_camera, R.string.usage_type_flashlight, }; values = new double[] { entry.sipper.cpuTimeMs, Loading @@ -139,7 +142,9 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi entry.sipper.wifiRxPackets, entry.sipper.wifiTxPackets, 0, 0 0, entry.sipper.cameraTimeMs, entry.sipper.flashlightTimeMs, }; if (entry.sipper.drainType == BatterySipper.DrainType.APP) { Loading Loading
res/drawable/ic_settings_camera.xml 0 → 100644 +33 −0 Original line number Diff line number Diff line <!-- Copyright (C) 2015 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="48" android:viewportHeight="48" android:autoMirrored="true"> <path android:fillColor="#000000" android:pathData="M18.8 21l9.53-16.51C26.94 4.18 25.49 4 24 4c-4.8 0-9.19 1.69-12.64 4.51l7.33 12.69.11-.2zm24.28-3c-1.84-5.85-6.3-10.52-11.99-12.68L23.77 18h19.31zm.52 2H28.62l.58 1 9.53 16.5C41.99 33.94 44 29.21 44 24c0-1.37-.14-2.71-.4-4zm-26.53 4l-7.8-13.5C6.01 14.06 4 18.79 4 24c0 1.37.14 2.71.4 4h14.98l-2.31-4zM4.92 30c1.84 5.85 6.3 10.52 11.99 12.68L24.23 30H4.92zm22.54 0l-7.8 13.51c1.4.31 2.85.49 4.34.49 4.8 0 9.19-1.69 12.64-4.51L29.31 26.8 27.46 30z"/> </vector>
res/values/strings.xml +13 −0 Original line number Diff line number Diff line Loading @@ -4031,6 +4031,10 @@ <string name="battery_stats_screen_on_label">Screen on</string> <!-- [CHAR LIMIT=25] Label for battery stats gps on state graph --> <string name="battery_stats_gps_on_label">GPS on</string> <!-- [CHAR LIMIT=25] Label for battery stats camera on state graph --> <string name="battery_stats_camera_on_label">Camera on</string> <!-- [CHAR LIMIT=25] Label for battery stats flashlight on state graph --> <string name="battery_stats_flashlight_on_label">Flashlight on</string> <!-- [CHAR LIMIT=25] Label for battery stats wifi running state graph --> <string name="battery_stats_wifi_running_label">Wi\u2011Fi</string> <!-- [CHAR LIMIT=25] Label for battery stats wake lock state graph --> Loading Loading @@ -4062,6 +4066,8 @@ <string name="power_screen">Screen</string> <!-- Label for power consumed by the flashlight --> <string name="power_flashlight">Flashlight</string> <!-- Label for power consumed by the camera --> <string name="power_camera">Camera</string> <!-- Label for power consumed by Wi-Fi --> <string name="power_wifi">Wi\u2011Fi</string> <!-- Label for power consumed by Bluetooth --> Loading Loading @@ -4107,6 +4113,10 @@ <string name="usage_type_audio">Audio</string> <!-- Label for Video usage time --> <string name="usage_type_video">Video</string> <!-- Label for Camera usage time --> <string name="usage_type_camera">Camera</string> <!-- Label for Flashlight usage time --> <string name="usage_type_flashlight">Flashlight</string> <!-- Label for time that a feature has been on --> <string name="usage_type_on_time">Time on</string> <!-- Label for time that there was no cell coverage --> Loading Loading @@ -4147,6 +4157,9 @@ <!-- [CHAR_LIMIT=NONE] Description for power consumed by the flashlight --> <string name="battery_desc_flashlight">Battery used by the flashlight</string> <!-- [CHAR_LIMIT=NONE] Description for power consumed by the camera --> <string name="battery_desc_camera">Battery used by the camera</string> <!-- Description for power consumed by display --> <string name="battery_desc_display">Battery used by the display and backlight</string> <!-- Suggestion for reducing display power --> Loading
src/com/android/settings/fuelgauge/BatteryEntry.java +4 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,10 @@ public class BatteryEntry { name = context.getResources().getString(R.string.power_overcounted); iconId = R.drawable.ic_power_system; break; case CAMERA: name = context.getResources().getString(R.string.power_camera); iconId = R.drawable.ic_settings_camera; break; } if (iconId > 0) { icon = context.getDrawable(iconId); Loading
src/com/android/settings/fuelgauge/BatteryHistoryChart.java +87 −9 Original line number Diff line number Diff line Loading @@ -131,6 +131,8 @@ public class BatteryHistoryChart extends View { final Paint mChargingPaint = new Paint(); final Paint mScreenOnPaint = new Paint(); final Paint mGpsOnPaint = new Paint(); final Paint mFlashlightOnPaint = new Paint(); final Paint mCameraOnPaint = new Paint(); final Paint mWifiRunningPaint = new Paint(); final Paint mCpuRunningPaint = new Paint(); final Paint mDateLinePaint = new Paint(); Loading @@ -147,6 +149,8 @@ public class BatteryHistoryChart extends View { final Path mChargingPath = new Path(); final Path mScreenOnPath = new Path(); final Path mGpsOnPath = new Path(); final Path mFlashlightOnPath = new Path(); final Path mCameraOnPath = new Path(); final Path mWifiRunningPath = new Path(); final Path mCpuRunningPath = new Path(); final Path mDateLinePath = new Path(); Loading @@ -164,6 +168,8 @@ public class BatteryHistoryChart extends View { String mChargingLabel; String mScreenOnLabel; String mGpsOnLabel; String mCameraOnLabel; String mFlashlightOnLabel; String mWifiRunningLabel; String mCpuRunningLabel; String mPhoneSignalLabel; Loading Loading @@ -195,6 +201,8 @@ public class BatteryHistoryChart extends View { int mChargingOffset; int mScreenOnOffset; int mGpsOnOffset; int mFlashlightOnOffset; int mCameraOnOffset; int mWifiRunningOffset; int mCpuRunningOffset; int mPhoneSignalOffset; Loading @@ -217,6 +225,8 @@ public class BatteryHistoryChart extends View { boolean mHaveWifi; boolean mHaveGps; boolean mHavePhoneSignal; boolean mHaveCamera; boolean mHaveFlashlight; final ArrayList<TimeLabel> mTimeLabels = new ArrayList<TimeLabel>(); final ArrayList<DateLabel> mDateLabels = new ArrayList<DateLabel>(); Loading Loading @@ -367,6 +377,8 @@ public class BatteryHistoryChart extends View { mChargingPaint.setStyle(Paint.Style.STROKE); mScreenOnPaint.setStyle(Paint.Style.STROKE); mGpsOnPaint.setStyle(Paint.Style.STROKE); mCameraOnPaint.setStyle(Paint.Style.STROKE); mFlashlightOnPaint.setStyle(Paint.Style.STROKE); mWifiRunningPaint.setStyle(Paint.Style.STROKE); mCpuRunningPaint.setStyle(Paint.Style.STROKE); mPhoneSignalChart.setColors(com.android.settings.Utils.BADNESS_COLORS); Loading @@ -374,6 +386,8 @@ public class BatteryHistoryChart extends View { mDebugRectPaint.setStyle(Paint.Style.STROKE); mScreenOnPaint.setColor(0xFF009688); mGpsOnPaint.setColor(0xFF009688); mCameraOnPaint.setColor(0xFF009688); mFlashlightOnPaint.setColor(0xFF009688); mWifiRunningPaint.setColor(0xFF009688); mCpuRunningPaint.setColor(0xFF009688); mChargingPaint.setColor(0xFF009688); Loading Loading @@ -435,6 +449,8 @@ public class BatteryHistoryChart extends View { mBatteryBackgroundPaint.setColor(a.getInt(attr, 0)); mScreenOnPaint.setColor(a.getInt(attr, 0)); mGpsOnPaint.setColor(a.getInt(attr, 0)); mCameraOnPaint.setColor(a.getInt(attr, 0)); mFlashlightOnPaint.setColor(a.getInt(attr, 0)); mWifiRunningPaint.setColor(a.getInt(attr, 0)); mCpuRunningPaint.setColor(a.getInt(attr, 0)); mChargingPaint.setColor(a.getInt(attr, 0)); Loading Loading @@ -485,6 +501,8 @@ public class BatteryHistoryChart extends View { mChargingLabel = getContext().getString(R.string.battery_stats_charging_label); mScreenOnLabel = getContext().getString(R.string.battery_stats_screen_on_label); mGpsOnLabel = getContext().getString(R.string.battery_stats_gps_on_label); mCameraOnLabel = getContext().getString(R.string.battery_stats_camera_on_label); mFlashlightOnLabel = getContext().getString(R.string.battery_stats_flashlight_on_label); mWifiRunningLabel = getContext().getString(R.string.battery_stats_wifi_running_label); mCpuRunningLabel = getContext().getString(R.string.battery_stats_wake_lock_label); mPhoneSignalLabel = getContext().getString(R.string.battery_stats_phone_signal_label); Loading Loading @@ -599,6 +617,8 @@ public class BatteryHistoryChart extends View { mEndWallTime = mEndDataWallTime + (remainingTimeUs/1000); mNumHist = lastInteresting; mHaveGps = (aggrStates&HistoryItem.STATE_GPS_ON_FLAG) != 0; mHaveFlashlight = (aggrStates2&HistoryItem.STATE2_FLASHLIGHT_FLAG) != 0; mHaveCamera = (aggrStates2&HistoryItem.STATE2_CAMERA_FLAG) != 0; mHaveWifi = (aggrStates2&HistoryItem.STATE2_WIFI_RUNNING_FLAG) != 0 || (aggrStates&(HistoryItem.STATE_WIFI_FULL_LOCK_FLAG |HistoryItem.STATE_WIFI_MULTICAST_ON_FLAG Loading Loading @@ -628,7 +648,8 @@ public class BatteryHistoryChart extends View { void finishPaths(int w, int h, int levelh, int startX, int y, Path curLevelPath, int lastX, boolean lastCharging, boolean lastScreenOn, boolean lastGpsOn, boolean lastWifiRunning, boolean lastCpuRunning, Path lastPath) { boolean lastFlashlightOn, boolean lastCameraOn, boolean lastWifiRunning, boolean lastCpuRunning, Path lastPath) { if (curLevelPath != null) { if (lastX >= 0 && lastX < w) { if (lastPath != null) { Loading @@ -650,6 +671,12 @@ public class BatteryHistoryChart extends View { if (lastGpsOn) { mGpsOnPath.lineTo(w, h-mGpsOnOffset); } if (lastFlashlightOn) { mFlashlightOnPath.lineTo(w, h-mFlashlightOnOffset); } if (lastCameraOn) { mCameraOnPath.lineTo(w, h-mCameraOnOffset); } if (lastWifiRunning) { mWifiRunningPath.lineTo(w, h-mWifiRunningOffset); } Loading Loading @@ -720,6 +747,8 @@ public class BatteryHistoryChart extends View { mChargingPaint.setStrokeWidth(mLineWidth); mScreenOnPaint.setStrokeWidth(mLineWidth); mGpsOnPaint.setStrokeWidth(mLineWidth); mCameraOnPaint.setStrokeWidth(mLineWidth); mFlashlightOnPaint.setStrokeWidth(mLineWidth); mWifiRunningPaint.setStrokeWidth(mLineWidth); mCpuRunningPaint.setStrokeWidth(mLineWidth); mDebugRectPaint.setStrokeWidth(1); Loading @@ -732,15 +761,18 @@ public class BatteryHistoryChart extends View { mCpuRunningOffset = mScreenOnOffset + fullBarOffset; mWifiRunningOffset = mCpuRunningOffset + fullBarOffset; mGpsOnOffset = mWifiRunningOffset + (mHaveWifi ? fullBarOffset : 0); mPhoneSignalOffset = mGpsOnOffset + (mHaveGps ? fullBarOffset : 0); mFlashlightOnOffset = mGpsOnOffset + (mHaveGps ? fullBarOffset : 0); mCameraOnOffset = mFlashlightOnOffset + (mHaveFlashlight ? fullBarOffset : 0); mPhoneSignalOffset = mCameraOnOffset + (mHaveCamera ? fullBarOffset : 0); mLevelOffset = mPhoneSignalOffset + (mHavePhoneSignal ? fullBarOffset : 0) + mLineWidth*2 + mLineWidth/2; if (mHavePhoneSignal) { mPhoneSignalChart.init(w); } } else { mScreenOnOffset = mGpsOnOffset = mWifiRunningOffset = mCpuRunningOffset = mChargingOffset = mPhoneSignalOffset = 0; mScreenOnOffset = mGpsOnOffset = mCameraOnOffset = mFlashlightOnOffset = mWifiRunningOffset = mCpuRunningOffset = mChargingOffset = mPhoneSignalOffset = 0; mLevelOffset = fullBarOffset + mThinLineWidth*4; if (mHavePhoneSignal) { mPhoneSignalChart.init(0); Loading @@ -754,6 +786,8 @@ public class BatteryHistoryChart extends View { mBatCriticalPath.reset(); mScreenOnPath.reset(); mGpsOnPath.reset(); mFlashlightOnPath.reset(); mCameraOnPath.reset(); mWifiRunningPath.reset(); mCpuRunningPath.reset(); mChargingPath.reset(); Loading @@ -778,6 +812,7 @@ public class BatteryHistoryChart extends View { Path curLevelPath = null; Path lastLinePath = null; boolean lastCharging = false, lastScreenOn = false, lastGpsOn = false; boolean lastFlashlightOn = false, lastCameraOn = false; boolean lastWifiRunning = false, lastWifiSupplRunning = false, lastCpuRunning = false; int lastWifiSupplState = BatteryStats.WIFI_SUPPL_STATE_INVALID; final int N = mNumHist; Loading Loading @@ -871,6 +906,28 @@ public class BatteryHistoryChart extends View { lastGpsOn = gpsOn; } final boolean flashlightOn = (rec.states2&HistoryItem.STATE2_FLASHLIGHT_FLAG) != 0; if (flashlightOn != lastFlashlightOn) { if (flashlightOn) { mFlashlightOnPath.moveTo(x, h-mFlashlightOnOffset); } else { mFlashlightOnPath.lineTo(x, h-mFlashlightOnOffset); } lastFlashlightOn = flashlightOn; } final boolean cameraOn = (rec.states2&HistoryItem.STATE2_CAMERA_FLAG) != 0; if (cameraOn != lastCameraOn) { if (cameraOn) { mCameraOnPath.moveTo(x, h-mCameraOnOffset); } else { mCameraOnPath.lineTo(x, h-mCameraOnOffset); } lastCameraOn = cameraOn; } final int wifiSupplState = ((rec.states2&HistoryItem.STATE2_WIFI_SUPPL_STATE_MASK) >> HistoryItem.STATE2_WIFI_SUPPL_STATE_SHIFT); Loading Loading @@ -952,12 +1009,13 @@ public class BatteryHistoryChart extends View { || Math.abs(lastWalltime-curWalltime) > (60*60*1000))) { if (curLevelPath != null) { finishPaths(x+1, h, levelh, startX, lastY, curLevelPath, lastX, lastCharging, lastScreenOn, lastGpsOn, lastWifiRunning, lastCpuRunning, lastLinePath); lastCharging, lastScreenOn, lastGpsOn, lastFlashlightOn, lastCameraOn, lastWifiRunning, lastCpuRunning, lastLinePath); lastX = lastY = -1; curLevelPath = null; lastLinePath = null; lastCharging = lastScreenOn = lastGpsOn = lastCpuRunning = false; lastCharging = lastScreenOn = lastGpsOn = lastFlashlightOn = lastCameraOn = lastCpuRunning = false; } } } Loading Loading @@ -992,8 +1050,8 @@ public class BatteryHistoryChart extends View { } finishPaths(x, h, levelh, startX, lastY, curLevelPath, lastX, lastCharging, lastScreenOn, lastGpsOn, lastWifiRunning, lastCpuRunning, lastLinePath); lastCharging, lastScreenOn, lastGpsOn, lastFlashlightOn, lastCameraOn, lastWifiRunning, lastCpuRunning, lastLinePath); if (x < w) { // If we reserved room for the remaining time, create a final path to draw Loading Loading @@ -1237,6 +1295,18 @@ public class BatteryHistoryChart extends View { canvas.drawPath(mGpsOnPath, mGpsOnPaint); } } if (mHaveFlashlight) { if (!mFlashlightOnPath.isEmpty()) { if (DEBUG) Log.d(TAG, "Drawing flashlight path"); canvas.drawPath(mFlashlightOnPath, mFlashlightOnPaint); } } if (mHaveCamera) { if (!mCameraOnPath.isEmpty()) { if (DEBUG) Log.d(TAG, "Drawing camera path"); canvas.drawPath(mCameraOnPath, mCameraOnPaint); } } if (mHaveWifi) { if (!mWifiRunningPath.isEmpty()) { if (DEBUG) Log.d(TAG, "Drawing wifi path"); Loading @@ -1260,6 +1330,14 @@ public class BatteryHistoryChart extends View { canvas.drawText(mGpsOnLabel, textStartX, height - mGpsOnOffset - mTextDescent, mTextPaint); } if (mHaveFlashlight) { canvas.drawText(mFlashlightOnLabel, textStartX, height - mFlashlightOnOffset - mTextDescent, mTextPaint); } if (mHaveCamera) { canvas.drawText(mCameraOnLabel, textStartX, height - mCameraOnOffset - mTextDescent, mTextPaint); } if (mHaveWifi) { canvas.drawText(mWifiRunningLabel, textStartX, height - mWifiRunningOffset - mTextDescent, mTextPaint); Loading
src/com/android/settings/fuelgauge/PowerUsageDetail.java +6 −1 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi R.string.battery_desc_users, R.string.battery_desc_unaccounted, R.string.battery_desc_overcounted, R.string.battery_desc_camera, }; public static void startBatteryDetailPage( Loading Loading @@ -126,6 +127,8 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi R.string.usage_type_data_wifi_send, R.string.usage_type_audio, R.string.usage_type_video, R.string.usage_type_camera, R.string.usage_type_flashlight, }; values = new double[] { entry.sipper.cpuTimeMs, Loading @@ -139,7 +142,9 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi entry.sipper.wifiRxPackets, entry.sipper.wifiTxPackets, 0, 0 0, entry.sipper.cameraTimeMs, entry.sipper.flashlightTimeMs, }; if (entry.sipper.drainType == BatterySipper.DrainType.APP) { Loading