From a1f28d94fb53912375b076297f515bf52afc74ed Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Thu, 4 Jun 2015 10:50:25 -0400 Subject: [PATCH] Fix crash in battery screen Also add a fake app item Bug: 21624653 Change-Id: I1a8598472e014f773d2396a9a08fd03e8e32b400 --- src/com/android/settings/TintablePreference.java | 2 +- src/com/android/settings/fuelgauge/FakeUid.java | 246 +++++++++++++++++++++ .../settings/fuelgauge/PowerUsageSummary.java | 4 +- 3 files changed, 250 insertions(+), 2 deletions(-) create mode 100644 src/com/android/settings/fuelgauge/FakeUid.java diff --git a/src/com/android/settings/TintablePreference.java b/src/com/android/settings/TintablePreference.java index 3c56b1e12c..58794b949b 100644 --- a/src/com/android/settings/TintablePreference.java +++ b/src/com/android/settings/TintablePreference.java @@ -40,7 +40,7 @@ public class TintablePreference extends Preference { super.onBindView(view); if (mTintColor != 0) { - ((ImageView) view.findViewById(R.id.icon)).setImageTintList( + ((ImageView) view.findViewById(android.R.id.icon)).setImageTintList( ColorStateList.valueOf(mTintColor)); } } diff --git a/src/com/android/settings/fuelgauge/FakeUid.java b/src/com/android/settings/fuelgauge/FakeUid.java new file mode 100644 index 0000000000..25ed8aea1c --- /dev/null +++ b/src/com/android/settings/fuelgauge/FakeUid.java @@ -0,0 +1,246 @@ +/* + * 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. + */ + +package com.android.settings.fuelgauge; + +import android.os.BatteryStats.Timer; +import android.os.BatteryStats.Uid; +import android.os.Process; +import android.util.ArrayMap; +import android.util.SparseArray; + +/** + * Fake UID for testing power usage screen. + */ +public class FakeUid extends Uid { + + @Override + public int getUid() { + return Process.FIRST_APPLICATION_UID; + } + + @Override + public ArrayMap getWakelockStats() { + return null; + } + + @Override + public ArrayMap getSyncStats() { + return null; + } + + @Override + public ArrayMap getJobStats() { + return null; + } + + @Override + public SparseArray getSensorStats() { + return null; + } + + @Override + public SparseArray getPidStats() { + return null; + } + + @Override + public ArrayMap getProcessStats() { + return null; + } + + @Override + public ArrayMap getPackageStats() { + return null; + } + + @Override + public long getWifiControllerActivity(int type, int which) { + return 0; + } + + @Override + public void noteWifiRunningLocked(long elapsedRealtime) { + } + + @Override + public void noteWifiStoppedLocked(long elapsedRealtime) { + } + + @Override + public void noteFullWifiLockAcquiredLocked(long elapsedRealtime) { + } + + @Override + public void noteFullWifiLockReleasedLocked(long elapsedRealtime) { + } + + @Override + public void noteWifiScanStartedLocked(long elapsedRealtime) { + } + + @Override + public void noteWifiScanStoppedLocked(long elapsedRealtime) { + } + + @Override + public void noteWifiBatchedScanStartedLocked(int csph, long elapsedRealtime) { + } + + @Override + public void noteWifiBatchedScanStoppedLocked(long elapsedRealtime) { + } + + @Override + public void noteWifiMulticastEnabledLocked(long elapsedRealtime) { + } + + @Override + public void noteWifiMulticastDisabledLocked(long elapsedRealtime) { + } + + @Override + public void noteActivityResumedLocked(long elapsedRealtime) { + } + + @Override + public void noteActivityPausedLocked(long elapsedRealtime) { + } + + @Override + public long getWifiRunningTime(long elapsedRealtimeUs, int which) { + return 0; + } + + @Override + public long getFullWifiLockTime(long elapsedRealtimeUs, int which) { + return 0; + } + + @Override + public long getWifiScanTime(long elapsedRealtimeUs, int which) { + return 0; + } + + @Override + public int getWifiScanCount(int which) { + return 0; + } + + @Override + public long getWifiBatchedScanTime(int csphBin, long elapsedRealtimeUs, int which) { + return 0; + } + + @Override + public int getWifiBatchedScanCount(int csphBin, int which) { + return 0; + } + + @Override + public long getWifiMulticastTime(long elapsedRealtimeUs, int which) { + return 0; + } + + @Override + public Timer getAudioTurnedOnTimer() { + return null; + } + + @Override + public Timer getVideoTurnedOnTimer() { + return null; + } + + @Override + public Timer getFlashlightTurnedOnTimer() { + return null; + } + + @Override + public Timer getCameraTurnedOnTimer() { + return null; + } + + @Override + public Timer getForegroundActivityTimer() { + return null; + } + + @Override + public long getProcessStateTime(int state, long elapsedRealtimeUs, int which) { + return 0; + } + + @Override + public Timer getVibratorOnTimer() { + return null; + } + + @Override + public void noteUserActivityLocked(int type) { + } + + @Override + public boolean hasUserActivity() { + return false; + } + + @Override + public int getUserActivityCount(int type, int which) { + return 0; + } + + @Override + public boolean hasNetworkActivity() { + return false; + } + + @Override + public long getNetworkActivityBytes(int type, int which) { + return 0; + } + + @Override + public long getNetworkActivityPackets(int type, int which) { + return 0; + } + + @Override + public long getMobileRadioActiveTime(int which) { + return 0; + } + + @Override + public int getMobileRadioActiveCount(int which) { + return 0; + } + + @Override + public long getUserCpuTimeUs(int which) { + return 0; + } + + @Override + public long getSystemCpuTimeUs(int which) { + return 0; + } + + @Override + public long getTimeAtCpuSpeed(int step, int which) { + return 0; + } +} diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 1fe59e909a..d5e7bf7af4 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -35,8 +35,8 @@ import android.view.MenuItem; import com.android.internal.logging.MetricsLogger; import com.android.internal.os.BatterySipper; -import com.android.internal.os.PowerProfile; import com.android.internal.os.BatterySipper.DrainType; +import com.android.internal.os.PowerProfile; import com.android.settings.HelpUtils; import com.android.settings.R; import com.android.settings.Settings.HighPowerApplicationsActivity; @@ -282,6 +282,8 @@ public class PowerUsageSummary extends PowerUsageBase { stats.add(new BatterySipper(type, null, use)); use += 5; } + BatterySipper sipper = new BatterySipper(DrainType.APP, new FakeUid(), use); + stats.add(sipper); return stats; } -- 2.11.0