// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.olio.data.object.analytics; import com.olio.util.ALog; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class BatteryStatsHelper { public static class PartialWakeLockLog { private int numberOfOccurrences; private String processName; private long totalTime; public int getNumberOfOccurrences() { return numberOfOccurrences; } public String getProcessName() { return processName; } public long getTotalTime() { return totalTime; } public void setNumberOfOccurrences(int i) { numberOfOccurrences = i; } public void setProcessName(String s) { processName = s; } public void setTotalTime(long l) { totalTime = l; } public String toString() { return (new StringBuilder()).append("PartialWakeLockLog{numberOfOccurrences='").append(numberOfOccurrences).append('\'').append(", processName='").append(processName).append('\'').append(", totalTime='").append(totalTime).append('\'').append('}').toString(); } public PartialWakeLockLog() { } } public static class StatisticsSinceLastCharge { private String currentlyOnBattery; private int inputEvents; private long screenBrightnessesBrightTime; private long screenBrightnessesDarkTime; private long screenBrightnessesDimTime; private long screenBrightnessesLightTime; private long screenBrightnessesMediumTime; private long screenOnTime; private String systemCharts; private long timeOnBatteryRealtime; private String timeOnBatteryRealtimePercentage; private long timeOnBatteryUptime; private String timeOnBatteryUptimePercentage; private long totalFullWakelockTime; private long totalPartialWakelockTime; private long totalRunRealtime; private long totalRunUptime; public String getCurrentlyOnBattery() { return currentlyOnBattery; } public int getInputEvents() { return inputEvents; } public long getScreenBrightnessesBrightTime() { return screenBrightnessesBrightTime; } public long getScreenBrightnessesDarkTime() { return screenBrightnessesDarkTime; } public long getScreenBrightnessesDimTime() { return screenBrightnessesDimTime; } public long getScreenBrightnessesLightTime() { return screenBrightnessesLightTime; } public long getScreenBrightnessesMediumTime() { return screenBrightnessesMediumTime; } public long getScreenOnTime() { return screenOnTime; } public String getSystemCharts() { return systemCharts; } public long getTimeOnBatteryRealtime() { return timeOnBatteryRealtime; } public String getTimeOnBatteryRealtimePercentage() { return timeOnBatteryRealtimePercentage; } public long getTimeOnBatteryUptime() { return timeOnBatteryUptime; } public String getTimeOnBatteryUptimePercentage() { return timeOnBatteryUptimePercentage; } public long getTotalFullWakelockTime() { return totalFullWakelockTime; } public long getTotalPartialWakelockTime() { return totalPartialWakelockTime; } public long getTotalRunRealtime() { return totalRunRealtime; } public long getTotalRunUptime() { return totalRunUptime; } public void setCurrentlyOnBattery(String s) { currentlyOnBattery = s; } public void setInputEvents(int i) { inputEvents = i; } public void setScreenBrightnessesBrightTime(long l) { screenBrightnessesBrightTime = l; } public void setScreenBrightnessesDarkTime(long l) { screenBrightnessesDarkTime = l; } public void setScreenBrightnessesDimTime(long l) { screenBrightnessesDimTime = l; } public void setScreenBrightnessesLightTime(long l) { screenBrightnessesLightTime = l; } public void setScreenBrightnessesMediumTime(long l) { screenBrightnessesMediumTime = l; } public void setScreenOnTime(long l) { screenOnTime = l; } public void setSystemCharts(String s) { systemCharts = s; } public void setTimeOnBatteryRealtime(long l) { timeOnBatteryRealtime = l; } public void setTimeOnBatteryRealtimePercentage(String s) { timeOnBatteryRealtimePercentage = s; } public void setTimeOnBatteryUptime(long l) { timeOnBatteryUptime = l; } public void setTimeOnBatteryUptimePercentage(String s) { timeOnBatteryUptimePercentage = s; } public void setTotalFullWakelockTime(long l) { totalFullWakelockTime = l; } public void setTotalPartialWakelockTime(long l) { totalPartialWakelockTime = l; } public void setTotalRunRealtime(long l) { totalRunRealtime = l; } public void setTotalRunUptime(long l) { totalRunUptime = l; } public String toString() { return (new StringBuilder()).append("StatisticsSinceLastCharge{\n systemCharts='").append(systemCharts).append('\'').append("\n currentlyOnBattery='").append(currentlyOnBattery).append('\'').append("\n timeOnBatteryRealtime=").append(timeOnBatteryRealtime).append("\n timeOnBatteryRealtimePercentage='").append(timeOnBatteryRealtimePercentage.replace("%", "")).append('\'').append("\n timeOnBatteryUptime=").append(timeOnBatteryUptime).append("\n timeOnBatteryUptimePercentage='").append(timeOnBatteryUptimePercentage.replace("%", "")).append('\'').append("\n totalRunRealtime=").append(totalRunRealtime).append("\n totalRunUptime=").append(totalRunUptime).append("\n screenOnTime=").append(screenOnTime).append("\n inputEvents=").append(inputEvents).append("\n screenBrightnessesDarkTime=").append(screenBrightnessesDarkTime).append("\n screenBrightnessesDimTime=").append(screenBrightnessesDimTime).append("\n screenBrightnessesMediumTime=").append(screenBrightnessesMediumTime).append("\n screenBrightnessesLightTime=").append(screenBrightnessesLightTime).append("\n screenBrightnessesBrightTime=").append(screenBrightnessesBrightTime).append("\n totalFullWakelockTime=").append(totalFullWakelockTime).append("\n totalPartialWakelockTime=").append(totalPartialWakelockTime).append('}').toString(); } public StatisticsSinceLastCharge() { } } public BatteryStatsHelper() { } private static long convertFormattedTimeToLong(String s) { s = s.split(" "); long l1 = 0L; int j = s.length; int i = 0; while (i < j) { String s1 = s[i]; long l; if (s1.contains("d")) { l = l1 + 1000L * Long.valueOf(s1.replace("d", "")).longValue() * 60L * 60L * 24L; } else if (s1.contains("h")) { l = l1 + 1000L * Long.valueOf(s1.replace("h", "")).longValue() * 60L * 60L; } else if (s1.contains("ms")) { l = l1 + Long.valueOf(s1.replace("ms", "")).longValue(); } else if (s1.contains("m")) { l = l1 + 1000L * Long.valueOf(s1.replace("m", "")).longValue() * 60L; } else { l = l1; if (s1.contains("s")) { l = l1 + 1000L * Long.valueOf(s1.replace("s", "")).longValue(); } } i++; l1 = l; } return l1; } public static ArrayList getBatteryStats() { Object obj; Object obj2; ArrayList arraylist; StatisticsSinceLastCharge statisticssincelastcharge; obj = null; obj2 = null; arraylist = new ArrayList(); statisticssincelastcharge = new StatisticsSinceLastCharge(); Object obj1 = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("dumpsys batterystats").getInputStream())); boolean flag; boolean flag1; flag = false; flag1 = false; _L6: obj = ((BufferedReader) (obj1)).readLine(); if (obj == null) goto _L2; else goto _L1 _L1: obj = ((String) (obj)).trim(); if (!((String) (obj)).isEmpty()) goto _L4; else goto _L3 _L3: boolean flag2; boolean flag3; flag2 = false; flag3 = false; _L9: if (((String) (obj)).contains("All partial wake locks:")) { flag2 = true; } flag = flag2; flag1 = flag3; if (!((String) (obj)).contains("Statistics since last charge:")) goto _L6; else goto _L5 _L5: flag1 = true; flag = flag2; goto _L6 _L4: if (!flag) goto _L8; else goto _L7 _L7: arraylist.add(parsePartialWakeLockLog(((String) (obj)))); flag2 = flag; flag3 = flag1; goto _L9 obj2; _L13: obj = obj1; ALog.e("Exception getting batterystats", ((Throwable) (obj2)), new Object[0]); if (obj1 != null) { try { ((BufferedReader) (obj1)).close(); } // Misplaced declaration of an exception variable catch (Object obj) { ALog.e("Exception closing buffer", ((Throwable) (obj)), new Object[0]); } } arraylist.add(statisticssincelastcharge); return arraylist; _L8: flag2 = flag; flag3 = flag1; if (!flag1) goto _L9; else goto _L10 _L10: parseStatisticsSinceLastCharge(statisticssincelastcharge, ((String) (obj))); flag2 = flag; flag3 = flag1; goto _L9 obj; _L12: if (obj1 != null) { try { ((BufferedReader) (obj1)).close(); } // Misplaced declaration of an exception variable catch (Object obj1) { ALog.e("Exception closing buffer", ((Throwable) (obj1)), new Object[0]); } } throw obj; _L2: if (obj1 != null) { try { ((BufferedReader) (obj1)).close(); } // Misplaced declaration of an exception variable catch (Object obj) { ALog.e("Exception closing buffer", ((Throwable) (obj)), new Object[0]); } } break MISSING_BLOCK_LABEL_165; obj2; obj1 = obj; obj = obj2; if (true) goto _L12; else goto _L11 _L11: IOException ioexception; ioexception; obj1 = obj2; obj2 = ioexception; goto _L13 } private static PartialWakeLockLog parsePartialWakeLockLog(String s) { PartialWakeLockLog partialwakelocklog = new PartialWakeLockLog(); s = Pattern.compile("Wake lock (.*?) (.*?): (.*?) \\((.*?) times\\) realtime").matcher(s); if (s.find()) { partialwakelocklog.setProcessName(s.group(2)); partialwakelocklog.setTotalTime(convertFormattedTimeToLong(s.group(3))); partialwakelocklog.setNumberOfOccurrences(Integer.valueOf(s.group(4)).intValue()); } return partialwakelocklog; } public static void parseStatisticsSinceLastCharge(StatisticsSinceLastCharge statisticssincelastcharge, String s) { if (!s.startsWith("System starts:")) goto _L2; else goto _L1 _L1: Matcher matcher = Pattern.compile("System starts: (.*?),.*").matcher(s); if (matcher.find()) { statisticssincelastcharge.setSystemCharts(matcher.group(1)); } statisticssincelastcharge.setCurrentlyOnBattery(s.substring(s.lastIndexOf(" ") + 1)); _L4: return; _L2: if (!s.startsWith("Time on battery: ")) { break; /* Loop/switch isn't completed */ } Matcher matcher1 = Pattern.compile("Time on battery: (.*?) \\(.*").matcher(s); if (matcher1.find()) { statisticssincelastcharge.setTimeOnBatteryRealtime(convertFormattedTimeToLong(matcher1.group(1))); } matcher1 = Pattern.compile(".* \\((.*?)\\) realtime.*").matcher(s); if (matcher1.find()) { statisticssincelastcharge.setTimeOnBatteryRealtimePercentage(matcher1.group(1)); } matcher1 = Pattern.compile(".* realtime, (.*?) \\(.*").matcher(s); if (matcher1.find()) { statisticssincelastcharge.setTimeOnBatteryUptime(convertFormattedTimeToLong(matcher1.group(1))); } s = Pattern.compile(".* \\((.*?)\\) uptime").matcher(s); if (s.find()) { statisticssincelastcharge.setTimeOnBatteryUptimePercentage(s.group(1)); return; } if (true) goto _L4; else goto _L3 _L3: if (!s.startsWith("Total run time:")) { break; /* Loop/switch isn't completed */ } Matcher matcher2 = Pattern.compile(".*: (.*?) realtime.*").matcher(s); if (matcher2.find()) { statisticssincelastcharge.setTotalRunRealtime(convertFormattedTimeToLong(matcher2.group(1))); } s = Pattern.compile(".*, (.*?) uptime.*").matcher(s); if (s.find()) { statisticssincelastcharge.setTotalRunUptime(convertFormattedTimeToLong(s.group(1))); return; } if (true) goto _L4; else goto _L5 _L5: if (!s.startsWith("Screen on:")) { break; /* Loop/switch isn't completed */ } Matcher matcher3 = Pattern.compile(".*on: (.*?) \\(.*").matcher(s); if (matcher3.find()) { statisticssincelastcharge.setScreenOnTime(convertFormattedTimeToLong(matcher3.group(1))); } s = Pattern.compile(".*Input events: (.*?), .*").matcher(s); if (s.find()) { statisticssincelastcharge.setInputEvents(Integer.valueOf(s.group(1)).intValue()); return; } if (true) goto _L4; else goto _L6 _L6: if (!s.startsWith("Screen brightnesses:")) { continue; /* Loop/switch isn't completed */ } Matcher matcher4 = Pattern.compile(".*dark (.*?) \\(.*").matcher(s); if (matcher4.find()) { statisticssincelastcharge.setScreenBrightnessesDarkTime(convertFormattedTimeToLong(matcher4.group(1))); } matcher4 = Pattern.compile(".*dim (.*?) \\(.*").matcher(s); if (matcher4.find()) { statisticssincelastcharge.setScreenBrightnessesDimTime(convertFormattedTimeToLong(matcher4.group(1))); } matcher4 = Pattern.compile(".*medium (.*?) \\(.*").matcher(s); if (matcher4.find()) { statisticssincelastcharge.setScreenBrightnessesMediumTime(convertFormattedTimeToLong(matcher4.group(1))); } matcher4 = Pattern.compile(".*light (.*?) \\(.*").matcher(s); if (matcher4.find()) { statisticssincelastcharge.setScreenBrightnessesLightTime(convertFormattedTimeToLong(matcher4.group(1))); } s = Pattern.compile(".*bright (.*?) \\(.*").matcher(s); if (s.find()) { statisticssincelastcharge.setScreenBrightnessesBrightTime(convertFormattedTimeToLong(s.group(1))); return; } continue; /* Loop/switch isn't completed */ if (!s.startsWith("Total full wakelock time:")) goto _L4; else goto _L7 _L7: Matcher matcher5 = Pattern.compile(".*full wakelock time: (.*?) ,.*").matcher(s); if (matcher5.find()) { statisticssincelastcharge.setTotalFullWakelockTime(convertFormattedTimeToLong(matcher5.group(1))); } s = Pattern.compile(".*partial wakelock time: (.*?)$").matcher(s); if (s.find()) { statisticssincelastcharge.setTotalPartialWakelockTime(convertFormattedTimeToLong(s.group(1))); return; } if (true) goto _L4; else goto _L8 _L8: } public static void resetBatteryStats() { try { Runtime.getRuntime().exec("dumpsys batterystats --reset"); return; } catch (Exception exception) { ALog.e("Exception resetting batterystats", exception, new Object[0]); } } }