From b287ba3e2b35d26f62a004e7d915b1b42ca2a905 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 4 Feb 2013 19:24:46 -0800 Subject: [PATCH] fix an issue where sensors power usage wasn't reported properly the battery service records a sensor's *handle*, but the PowerUsageSummary code used it as a sensor *type*. Change-Id: I0d2cbdffc24238d5e02f0d6369fa44ed990176a4 --- .../settings/fuelgauge/PowerUsageSummary.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 128d3a380e6..8ee896012a1 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -22,6 +22,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.UserInfo; import android.graphics.drawable.Drawable; +import android.hardware.Sensor; import android.hardware.SensorManager; import android.net.Uri; import android.os.BatteryStats; @@ -559,20 +560,23 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { for (Map.Entry sensorEntry : sensorStats.entrySet()) { Uid.Sensor sensor = sensorEntry.getValue(); - int sensorType = sensor.getHandle(); + int sensorHandle = sensor.getHandle(); BatteryStats.Timer timer = sensor.getSensorTime(); long sensorTime = timer.getTotalTimeLocked(uSecTime, which) / 1000; double multiplier = 0; - switch (sensorType) { + switch (sensorHandle) { case Uid.Sensor.GPS: multiplier = mPowerProfile.getAveragePower(PowerProfile.POWER_GPS_ON); gpsTime = sensorTime; break; default: - android.hardware.Sensor sensorData = - sensorManager.getDefaultSensor(sensorType); - if (sensorData != null) { - multiplier = sensorData.getPower(); + List sensorList = sensorManager.getSensorList( + android.hardware.Sensor.TYPE_ALL); + for (android.hardware.Sensor s : sensorList) { + if (s.getHandle() == sensorHandle) { + multiplier = s.getPower(); + break; + } } } p = (multiplier * sensorTime) / 1000;