diff options
| author | Dianne Hackborn <> | 2009-03-24 22:32:56 -0700 | 
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-24 22:32:56 -0700 | 
| commit | 627bba736d022c39696b7c582a6af5592d2b8c33 (patch) | |
| tree | 42c0b064b345aa053ca63ff09e928f24705f9101 /core/java/android/os | |
| parent | 1d4613c1ec6ddf8aec3f723a7cab4253d19f9e66 (diff) | |
| download | frameworks_base-627bba736d022c39696b7c582a6af5592d2b8c33.zip frameworks_base-627bba736d022c39696b7c582a6af5592d2b8c33.tar.gz frameworks_base-627bba736d022c39696b7c582a6af5592d2b8c33.tar.bz2 | |
Automated import from //branches/donutburger/...@142347,142347
Diffstat (limited to 'core/java/android/os')
| -rw-r--r-- | core/java/android/os/BatteryStats.java | 115 | 
1 files changed, 106 insertions, 9 deletions
| diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index d492b6a..c72b828 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -4,8 +4,6 @@ import java.io.PrintWriter;  import java.util.Formatter;  import java.util.Map; -import com.android.internal.os.BatteryStatsImpl.Timer; -  import android.util.Log;  import android.util.Printer;  import android.util.SparseArray; @@ -92,6 +90,8 @@ public abstract class BatteryStats implements Parcelable {      private static final String BATTERY_DATA = "battery";      private static final String WIFI_LOCK_DATA = "wifilock";      private static final String MISC_DATA = "misc"; +    private static final String SIGNAL_STRENGTH_DATA = "signal"; +    private static final String DATA_CONNECTION_DATA = "dataconn";      private final StringBuilder mFormatBuilder = new StringBuilder(8);      private final Formatter mFormatter = new Formatter(mFormatBuilder); @@ -122,7 +122,7 @@ public abstract class BatteryStats implements Parcelable {          /**           * Temporary for debugging.           */ -        public abstract void logState(); +        public abstract void logState(Printer pw, String prefix);      }      /** @@ -293,6 +293,48 @@ public abstract class BatteryStats implements Parcelable {       */      public abstract long getPhoneOnTime(long batteryRealtime, int which); +    public static final int SIGNAL_STRENGTH_NONE_OR_UNKNOWN = 0; +    public static final int SIGNAL_STRENGTH_POOR = 1; +    public static final int SIGNAL_STRENGTH_MODERATE = 2; +    public static final int SIGNAL_STRENGTH_GOOD = 3; +    public static final int SIGNAL_STRENGTH_GREAT = 4; +     +    static final String[] SIGNAL_STRENGTH_NAMES = { +        "none", "poor", "moderate", "good", "great" +    }; +     +    public static final int NUM_SIGNAL_STRENGTH_BINS = 5; +     +    /** +     * Returns the time in milliseconds that the phone has been running with +     * the given signal strength. +     *  +     * {@hide} +     */ +    public abstract long getPhoneSignalStrengthTime(int strengthBin, +            long batteryRealtime, int which); + +    public static final int DATA_CONNECTION_NONE = 0; +    public static final int DATA_CONNECTION_GPRS = 1; +    public static final int DATA_CONNECTION_EDGE = 2; +    public static final int DATA_CONNECTION_UMTS = 3; +    public static final int DATA_CONNECTION_OTHER = 4; +     +    static final String[] DATA_CONNECTION_NAMES = { +        "none", "gprs", "edge", "umts", "other" +    }; +     +    public static final int NUM_DATA_CONNECTION_TYPES = 5; +     +    /** +     * Returns the time in milliseconds that the phone has been running with +     * the given data connection. +     *  +     * {@hide} +     */ +    public abstract long getPhoneDataConnectionTime(int dataType, +            long batteryRealtime, int which); +      /**       * Returns the time in milliseconds that wifi has been on while the device was       * running on battery. @@ -561,6 +603,20 @@ public abstract class BatteryStats implements Parcelable {                  screenOnTime / 1000, phoneOnTime / 1000, wifiOnTime / 1000,                  wifiRunningTime / 1000, bluetoothOnTime / 1000); +        // Dump signal strength stats +        Object[] args = new Object[NUM_SIGNAL_STRENGTH_BINS]; +        for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { +            args[i] = getPhoneSignalStrengthTime(i, batteryRealtime, which) / 1000; +        } +        dumpLine(pw, 0 /* uid */, category, SIGNAL_STRENGTH_DATA, args); +         +        // Dump network type stats +        args = new Object[NUM_DATA_CONNECTION_TYPES]; +        for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { +            args[i] = getPhoneDataConnectionTime(i, batteryRealtime, which) / 1000; +        } +        dumpLine(pw, 0 /* uid */, category, DATA_CONNECTION_DATA, args); +                  if (which == STATS_UNPLUGGED) {              dumpLine(pw, 0 /* uid */, category, BATTERY_DATA, getUnpluggedStartLevel(),                       getPluggedStartLevel()); @@ -706,17 +762,58 @@ public abstract class BatteryStats implements Parcelable {          final long wifiOnTime = getWifiOnTime(batteryRealtime, which);          final long bluetoothOnTime = getBluetoothOnTime(batteryRealtime, which);          pw.println(prefix -                + "  Time with screen on: " + formatTimeMs(screenOnTime / 1000) +                + "  Screen on: " + formatTimeMs(screenOnTime / 1000)                  + "(" + formatRatioLocked(screenOnTime, whichBatteryRealtime) -                + "), time with phone on: " + formatTimeMs(phoneOnTime / 1000) -                + "(" + formatRatioLocked(phoneOnTime, whichBatteryRealtime) -                + "), time with wifi on: " + formatTimeMs(wifiOnTime / 1000) +                + "), Phone on: " + formatTimeMs(phoneOnTime / 1000) +                + "(" + formatRatioLocked(phoneOnTime, whichBatteryRealtime)); +        pw.println(prefix +                + "  Wifi on: " + formatTimeMs(wifiOnTime / 1000)                  + "(" + formatRatioLocked(wifiOnTime, whichBatteryRealtime) -                + "), time with wifi running: " + formatTimeMs(wifiRunningTime / 1000) +                + "), Wifi running: " + formatTimeMs(wifiRunningTime / 1000)                  + "(" + formatRatioLocked(wifiRunningTime, whichBatteryRealtime) -                + "), time with bluetooth on: " + formatTimeMs(bluetoothOnTime / 1000) +                + "), Bluetooth on: " + formatTimeMs(bluetoothOnTime / 1000)                  + "(" + formatRatioLocked(bluetoothOnTime, whichBatteryRealtime)+ ")"); +        sb.setLength(0); +        sb.append("  Signal strengths: "); +        boolean didOne = false; +        for (int i=0; i<NUM_SIGNAL_STRENGTH_BINS; i++) { +            final long time = getPhoneSignalStrengthTime(i, batteryRealtime, which); +            if (time == 0) { +                continue; +            } +            if (didOne) sb.append(", "); +            didOne = true; +            sb.append(SIGNAL_STRENGTH_NAMES[i]); +            sb.append(" "); +            sb.append(formatTimeMs(time/1000)); +            sb.append("("); +            sb.append(formatRatioLocked(time, whichBatteryRealtime)); +            sb.append(")"); +        } +        if (!didOne) sb.append("No activity"); +        pw.println(sb.toString()); +         +        sb.setLength(0); +        sb.append("  Data types: "); +        didOne = false; +        for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { +            final long time = getPhoneDataConnectionTime(i, batteryRealtime, which); +            if (time == 0) { +                continue; +            } +            if (didOne) sb.append(", "); +            didOne = true; +            sb.append(DATA_CONNECTION_NAMES[i]); +            sb.append(" "); +            sb.append(formatTimeMs(time/1000)); +            sb.append("("); +            sb.append(formatRatioLocked(time, whichBatteryRealtime)); +            sb.append(")"); +        } +        if (!didOne) sb.append("No activity"); +        pw.println(sb.toString()); +                  pw.println(" ");          if (which == STATS_UNPLUGGED) { | 
