// 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 android.content.Context; import android.content.SharedPreferences; import android.os.SystemClock; import com.olio.util.ALog; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Iterator; import org.apache.commons.lang3.builder.EqualsBuilder; public class AlarmStatsHelper { public static class AlarmStat { public int detailAlarmsCount; public String detailStartedBy; public long detailTotalTime; public int detailWakesCount; public String packageName; public long totalTime; public int wakeupsCount; public static AlarmStat fromSavedFormat(String s) { Object obj = null; if (s.trim() != "") { AlarmStat alarmstat = new AlarmStat(); s = s.split("\n"); obj = alarmstat; if (s.length > 0) { int j = s.length; int i = 0; do { obj = alarmstat; if (i >= j) { break; } obj = s[i].split(";"); if (obj.length == 7) { alarmstat.packageName = obj[0]; alarmstat.totalTime = Long.valueOf(obj[1]).longValue(); alarmstat.wakeupsCount = Integer.valueOf(obj[2]).intValue(); alarmstat.detailTotalTime = Long.valueOf(obj[3]).longValue(); alarmstat.detailWakesCount = Integer.valueOf(obj[4]).intValue(); alarmstat.detailAlarmsCount = Integer.valueOf(obj[5]).intValue(); alarmstat.detailStartedBy = obj[6]; i++; } else { return null; } } while (true); } } return ((AlarmStat) (obj)); } public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } else { obj = (AlarmStat)obj; return (new EqualsBuilder()).append(totalTime, ((AlarmStat) (obj)).totalTime).append(wakeupsCount, ((AlarmStat) (obj)).wakeupsCount).append(detailTotalTime, ((AlarmStat) (obj)).detailTotalTime).append(detailWakesCount, ((AlarmStat) (obj)).detailWakesCount).append(detailAlarmsCount, ((AlarmStat) (obj)).detailAlarmsCount).append(packageName, ((AlarmStat) (obj)).packageName).append(detailStartedBy, ((AlarmStat) (obj)).detailStartedBy).isEquals(); } } public boolean hasSameKey(AlarmStat alarmstat) { return packageName.equals(alarmstat.packageName) && detailStartedBy.equals(alarmstat.detailStartedBy); } public String toSaveFormat() { return String.format("%s;%d;%d;%d;%d;%d;%s\n", new Object[] { packageName, Long.valueOf(totalTime), Integer.valueOf(wakeupsCount), Long.valueOf(detailTotalTime), Integer.valueOf(detailWakesCount), Integer.valueOf(detailAlarmsCount), detailStartedBy }); } public String toString() { return (new StringBuilder()).append("AlarmStat{packageName='").append(packageName).append('\'').append(", totalTime=").append(totalTime).append(", wakeupsCount=").append(wakeupsCount).append(", detailTotalTime=").append(detailTotalTime).append(", detailWakesCount=").append(detailWakesCount).append(", detailAlarmsCount=").append(detailAlarmsCount).append(", detailStartedBy='").append(detailStartedBy).append('\'').append('}').toString(); } public AlarmStat() { } } private static final String ALARM_STATS_LAST_ELAPSED_TIME_KEY = "alarm_stats_last_elapsed_time"; public static final String ALARM_STATS_LAST_VALUES_KEY = "alarm_stats_last_values"; public static final String ALARM_STATS_SHARED_PREFERENCES_NAME = "alarm_stats_shared_preferences"; public static final String ALARM_STATS_TOTAL_VALUES_KEY = "alarm_stats_total_values"; public AlarmStatsHelper() { } private static void addAlarmStat(ArrayList arraylist, ArrayList arraylist1, AlarmStat alarmstat) { arraylist1 = findLastAlarmStat(alarmstat, arraylist1); if (arraylist1 != null) { if (arraylist1.equals(alarmstat)) { return; } alarmstat.totalTime = alarmstat.totalTime - ((AlarmStat) (arraylist1)).totalTime; alarmstat.wakeupsCount = alarmstat.wakeupsCount - ((AlarmStat) (arraylist1)).wakeupsCount; alarmstat.detailAlarmsCount = alarmstat.detailAlarmsCount - ((AlarmStat) (arraylist1)).detailAlarmsCount; alarmstat.detailTotalTime = alarmstat.detailTotalTime - ((AlarmStat) (arraylist1)).detailTotalTime; alarmstat.detailWakesCount = alarmstat.detailWakesCount - ((AlarmStat) (arraylist1)).detailWakesCount; } arraylist.add(alarmstat); } public static long convertFormattedTimeToLong(String s) { long l1 = 0L; long l2 = 0L; long l4 = 0L; long l5 = 0L; long l3 = 0L; String s1 = s.replace("+", "").trim(); int i = s1.length(); if (s1.endsWith("ms")) { i = s1.length() - 1; } s = ""; int j = 0; while (j < i) { char c = s1.charAt(j); if (Character.isDigit(c)) { s = String.format("%s%s", new Object[] { s, Character.valueOf(c) }); } else { char c1 = ' '; if (j + 1 < s1.length()) { c1 = s1.charAt(j + 1); } long l = Long.valueOf(s).longValue(); long l6; long l7; long l8; long l9; long l10; if (c == 'd') { l9 = l5; l8 = l4; l7 = l3; l6 = l2; l10 = l; } else if (c == 'h') { l10 = l1; l6 = l; l7 = l3; l8 = l4; l9 = l5; } else if (c == 'm' && c1 != 's') { l10 = l1; l6 = l2; l7 = l3; l8 = l; l9 = l5; } else if (c == 's') { l10 = l1; l6 = l2; l7 = l3; l8 = l4; l9 = l; } else { l10 = l1; l6 = l2; l7 = l3; l8 = l4; l9 = l5; if (c == 'm') { l10 = l1; l6 = l2; l7 = l3; l8 = l4; l9 = l5; if (c1 == 's') { l10 = l1; l6 = l2; l7 = l; l8 = l4; l9 = l5; } } } s = ""; l1 = l10; l2 = l6; l3 = l7; l4 = l8; l5 = l9; } j++; } return 24L * l1 * 60L * 60L * 1000L + 60L * l2 * 60L * 1000L + 60L * l4 * 1000L + 1000L * l5 + l3; } private static AlarmStat findLastAlarmStat(AlarmStat alarmstat, ArrayList arraylist) { Object obj = null; Object obj1 = null; if (arraylist != null) { Iterator iterator = arraylist.iterator(); arraylist = obj1; do { obj = arraylist; if (!iterator.hasNext()) { break; } obj = (AlarmStat)iterator.next(); if (alarmstat.hasSameKey(((AlarmStat) (obj)))) { arraylist = ((ArrayList) (obj)); } } while (true); } return ((AlarmStat) (obj)); } public static ArrayList getAlarmStats(Context context) { updateSavedAlarmStats(context); return loadAlarmsStats(context, "alarm_stats_total_values"); } private static ArrayList getCurrentAlarmStats() { Object obj; Object obj2; ArrayList arraylist; obj = null; obj2 = null; arraylist = new ArrayList(); Object obj1 = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("dumpsys alarm").getInputStream())); boolean flag; flag = false; obj = ""; _L12: obj2 = ((BufferedReader) (obj1)).readLine(); if (obj2 == null) goto _L2; else goto _L1 _L1: String s = ((String) (obj2)).replace("*ACTIVE*", "").trim(); if (!s.isEmpty()) goto _L4; else goto _L3 _L3: boolean flag1; flag1 = false; obj2 = obj; _L6: obj = obj2; flag = flag1; if (s.contains("Alarm Stats:")) { flag = true; obj = obj2; } continue; /* Loop/switch isn't completed */ _L4: obj2 = obj; flag1 = flag; if (!flag) goto _L6; else goto _L5 _L5: boolean flag2 = s.startsWith("+"); label0: { if (flag2) { break label0; } obj2 = s; flag1 = flag; } goto _L6 arraylist.add(parseAlarmStat(((String) (obj)), s)); obj2 = obj; flag1 = flag; goto _L6 obj2; ALog.e("Could not parase alarm stat properly.", ((Throwable) (obj2)), new Object[0]); obj2 = obj; flag1 = flag; goto _L6 obj2; _L10: 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]); return arraylist; } } return arraylist; _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]); return arraylist; } } return arraylist; obj1; _L8: if (obj != null) { try { ((BufferedReader) (obj)).close(); } // Misplaced declaration of an exception variable catch (Object obj) { ALog.e("Exception closing buffer", ((Throwable) (obj)), new Object[0]); } } throw obj1; obj2; obj = obj1; obj1 = obj2; if (true) goto _L8; else goto _L7 _L7: IOException ioexception; ioexception; obj1 = obj2; obj2 = ioexception; if (true) goto _L10; else goto _L9 _L9: if (true) goto _L12; else goto _L11 _L11: } public static ArrayList loadAlarmsStats(Context context, String s) { int i = 0; SharedPreferences sharedpreferences = context.getSharedPreferences("alarm_stats_shared_preferences", 0); context = new ArrayList(); s = sharedpreferences.getString(s, ""); if (s.length() > 0) { s = s.split("SavedAlarmStat:"); for (int j = s.length; i < j; i++) { AlarmStat alarmstat = AlarmStat.fromSavedFormat(s[i]); if (alarmstat != null) { context.add(alarmstat); } } } return context; } private static AlarmStat parseAlarmStat(String s, String s1) { s = s.split(" "); AlarmStat alarmstat = new AlarmStat(); alarmstat.packageName = s[0]; alarmstat.totalTime = convertFormattedTimeToLong(s[1]); alarmstat.wakeupsCount = Integer.valueOf(s[3]).intValue(); s1 = s1.split(" "); alarmstat.detailTotalTime = convertFormattedTimeToLong(s1[0]); alarmstat.detailWakesCount = Integer.valueOf(s1[1]).intValue(); alarmstat.detailAlarmsCount = Integer.valueOf(s1[3]).intValue(); s = ""; for (int i = 5; i < s1.length; i++) { s = String.format("%s %s", new Object[] { s, s1[i] }); } alarmstat.detailStartedBy = s; return alarmstat; } public static void resetTotalAlarmStats(Context context) { context = context.getSharedPreferences("alarm_stats_shared_preferences", 0).edit(); context.remove("alarm_stats_total_values"); context.apply(); } public static void saveAlarmsStats(Context context, ArrayList arraylist, String s) { android.content.SharedPreferences.Editor editor = context.getSharedPreferences("alarm_stats_shared_preferences", 0).edit(); context = ""; for (arraylist = arraylist.iterator(); arraylist.hasNext();) { context = String.format("%sSavedAlarmStat:%s", new Object[] { context, ((AlarmStat)arraylist.next()).toSaveFormat() }); } editor.putString(s, context); editor.apply(); } private static void updateAlarmStat(Context context, AlarmStat alarmstat, AlarmStat alarmstat1, ArrayList arraylist) { if (alarmstat.equals(alarmstat1)) { return; } if (alarmstat.totalTime > alarmstat1.totalTime || alarmstat.wakeupsCount > alarmstat1.wakeupsCount || alarmstat.detailWakesCount > alarmstat1.detailWakesCount || alarmstat.detailTotalTime > alarmstat1.detailTotalTime || alarmstat.detailAlarmsCount > alarmstat1.detailAlarmsCount) { long l1 = 0L; int k = 0; int j = 0; int i = 0; long l = 0L; context = findLastAlarmStat(alarmstat, arraylist); if (context != null) { l1 = ((AlarmStat) (context)).totalTime; k = ((AlarmStat) (context)).wakeupsCount; j = ((AlarmStat) (context)).detailWakesCount; i = ((AlarmStat) (context)).detailAlarmsCount; l = ((AlarmStat) (context)).detailTotalTime; } alarmstat.totalTime = alarmstat.totalTime + (alarmstat1.totalTime - l1); alarmstat.wakeupsCount = alarmstat.wakeupsCount + (alarmstat1.wakeupsCount - k); alarmstat.detailTotalTime = alarmstat.detailTotalTime + (alarmstat1.detailTotalTime - l); alarmstat.detailAlarmsCount = alarmstat.detailAlarmsCount + (alarmstat1.detailAlarmsCount - i); alarmstat.detailWakesCount = alarmstat.detailWakesCount + (alarmstat1.detailWakesCount - j); return; } else { alarmstat.totalTime = alarmstat1.totalTime; alarmstat.wakeupsCount = alarmstat1.wakeupsCount; alarmstat.detailAlarmsCount = alarmstat1.detailAlarmsCount; alarmstat.detailTotalTime = alarmstat1.detailTotalTime; alarmstat.detailWakesCount = alarmstat1.detailWakesCount; return; } } public static void updateSavedAlarmStats(Context context) { ArrayList arraylist = getCurrentAlarmStats(); ArrayList arraylist1 = loadAlarmsStats(context, "alarm_stats_total_values"); Object obj = context.getSharedPreferences("alarm_stats_shared_preferences", 0); long l = ((SharedPreferences) (obj)).getLong("alarm_stats_last_elapsed_time", 0L); long l1 = SystemClock.elapsedRealtime(); obj = ((SharedPreferences) (obj)).edit(); ((android.content.SharedPreferences.Editor) (obj)).putLong("alarm_stats_last_elapsed_time", l1); boolean flag; if (l > l1) { flag = true; } else { flag = false; } if (flag) { ((android.content.SharedPreferences.Editor) (obj)).putString("alarm_stats_last_values", ""); } ((android.content.SharedPreferences.Editor) (obj)).apply(); if ((arraylist1 == null || arraylist1.size() == 0) && flag) { saveAlarmsStats(context, arraylist, "alarm_stats_total_values"); saveAlarmsStats(context, arraylist, "alarm_stats_last_values"); return; } obj = loadAlarmsStats(context, "alarm_stats_last_values"); Iterator iterator = arraylist.iterator(); do { if (!iterator.hasNext()) { break; } AlarmStat alarmstat = (AlarmStat)iterator.next(); boolean flag1 = false; Iterator iterator1 = arraylist1.iterator(); do { if (!iterator1.hasNext()) { break; } AlarmStat alarmstat1 = (AlarmStat)iterator1.next(); if (alarmstat.hasSameKey(alarmstat1)) { flag1 = true; updateAlarmStat(context, alarmstat1, alarmstat, ((ArrayList) (obj))); } } while (true); if (!flag1) { addAlarmStat(arraylist1, ((ArrayList) (obj)), alarmstat); } } while (true); saveAlarmsStats(context, arraylist, "alarm_stats_last_values"); saveAlarmsStats(context, arraylist1, "alarm_stats_total_values"); } }