PowerUsageRankService.smali

.class public Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;
.super Ljava/lang/Object;
.source "PowerUsageRankService.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$AsyncRefreshStats;,
        Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$RunningTask;
    }
.end annotation


# static fields
.field private static final DEBUG:Z = false

.field private static final FIRST_APPLICATION_UID:I = 0x2710

.field private static final REFLASH_FAILED:I = 0xc8

.field private static final REFLASH_SUCCESS:I = 0x64

.field private static final TAG:Ljava/lang/String; = "PowerUsageSummary"


# instance fields
.field private mBatteryInfo:Lcom/android/internal/app/IBatteryStats;

.field private mCallbackList:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List",
            "<",
            "Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;",
            ">;"
        }
    .end annotation
.end field

.field private mContext:Landroid/content/Context;

.field private mLabel:Ljava/lang/String;

.field private mMaxPower:D

.field private mPowerProfile:Lcom/android/internal/os/PowerProfile;

.field private mRefreshHandler:Landroid/os/Handler;

.field private mRefreshLock:Z

.field private mRefreshThread:Ljava/lang/Thread;

.field private mRunningTask:Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$RunningTask;

.field private mSensorManager:Landroid/hardware/SensorManager;

.field private mStats:Lcom/android/internal/os/BatteryStatsImpl;

.field private mStatsPeriod:J

.field private mStatsType:I

.field private mTotalPower:D

.field private mUsageList:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List",
            "<",
            "Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;",
            ">;"
        }
    .end annotation
.end field

.field private result_EXTRA_REPORT_CHECKIN_DETAILS:Ljava/lang/String;

.field private result_EXTRA_REPORT_DETAILS:Ljava/lang/String;


# direct methods
.method public constructor <init>(Landroid/content/Context;)V
    .registers 6

    .prologue
    const/4 v3, 0x0

    const/4 v2, 0x0

    .line 154
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 58
    iput v3, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsType:I

    .line 60
    const-wide/high16 v0, 0x3ff0000000000000L    # 1.0

    iput-wide v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mMaxPower:D

    .line 63
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mUsageList:Ljava/util/List;

    .line 69
    iput-object v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mLabel:Ljava/lang/String;

    .line 71
    iput-boolean v3, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshLock:Z

    .line 73
    iput-object v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshThread:Ljava/lang/Thread;

    .line 76
    const-wide/16 v0, 0x0

    iput-wide v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsPeriod:J

    .line 84
    new-instance v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$1;

    invoke-direct {v0, p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$1;-><init>(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;)V

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshHandler:Landroid/os/Handler;

    .line 148
    iput-object v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRunningTask:Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$RunningTask;

    .line 155
    iput-object p1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mContext:Landroid/content/Context;

    .line 156
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->init()V

    .line 157
    return-void
.end method

.method static synthetic access$0(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;Z)V
    .registers 2

    .prologue
    .line 71
    iput-boolean p1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshLock:Z

    return-void
.end method

.method static synthetic access$1(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;)Ljava/lang/String;
    .registers 2

    .prologue
    .line 69
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mLabel:Ljava/lang/String;

    return-object v0
.end method

.method static synthetic access$2(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;Ljava/lang/String;)V
    .registers 2

    .prologue
    .line 69
    iput-object p1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mLabel:Ljava/lang/String;

    return-void
.end method

.method static synthetic access$3(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;)Ljava/util/List;
    .registers 2

    .prologue
    .line 75
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mCallbackList:Ljava/util/List;

    return-object v0
.end method

.method static synthetic access$4(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;)Ljava/util/List;
    .registers 2

    .prologue
    .line 63
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mUsageList:Ljava/util/List;

    return-object v0
.end method

.method static synthetic access$5(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;Ljava/util/List;)V
    .registers 2

    .prologue
    .line 114
    invoke-direct {p0, p1}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->notifySuccess(Ljava/util/List;)V

    return-void
.end method

.method static synthetic access$6(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;Ljava/lang/Thread;)V
    .registers 2

    .prologue
    .line 73
    iput-object p1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshThread:Ljava/lang/Thread;

    return-void
.end method

.method static synthetic access$7(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;)V
    .registers 1

    .prologue
    .line 131
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->notifyFailed()V

    return-void
.end method

.method static synthetic access$8(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;)Landroid/os/Handler;
    .registers 2

    .prologue
    .line 84
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshHandler:Landroid/os/Handler;

    return-object v0
.end method

.method static synthetic access$9(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;)I
    .registers 2

    .prologue
    .line 188
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->refreshStats()I

    move-result v0

    return v0
.end method

.method private asyncRefreshStats()V
    .registers 4

    .prologue
    .line 173
    iget-boolean v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshLock:Z

    if-nez v0, :cond_19

    .line 174
    const/4 v0, 0x1

    iput-boolean v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshLock:Z

    .line 176
    new-instance v0, Ljava/lang/Thread;

    new-instance v1, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$AsyncRefreshStats;

    const/4 v2, 0x0

    invoke-direct {v1, p0, v2}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$AsyncRefreshStats;-><init>(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$AsyncRefreshStats;)V

    invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshThread:Ljava/lang/Thread;

    .line 177
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRefreshThread:Ljava/lang/Thread;

    invoke-virtual {v0}, Ljava/lang/Thread;->start()V

    .line 179
    :cond_19
    return-void
.end method

.method private getAverageDataCost()D
    .registers 15

    .prologue
    .line 666
    .line 668
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mPowerProfile:Lcom/android/internal/os/PowerProfile;

    .line 669
    const-string/jumbo v1, "wifi.active"

    invoke-virtual {v0, v1}, Lcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;)D

    move-result-wide v0

    const-wide v2, 0x40ac200000000000L    # 3600.0

    .line 668
    div-double v6, v0, v2

    .line 670
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mPowerProfile:Lcom/android/internal/os/PowerProfile;

    .line 671
    const-string v1, "radio.active"

    invoke-virtual {v0, v1}, Lcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;)D

    move-result-wide v0

    const-wide v2, 0x40ac200000000000L    # 3600.0

    .line 670
    div-double v8, v0, v2

    .line 672
    const-wide/16 v2, 0x0

    .line 673
    const-wide/16 v0, 0x0

    .line 674
    sget v4, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v5, 0x13

    if-ge v4, v5, :cond_4c

    .line 675
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    iget v1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsType:I

    invoke-virtual {v0, v1}, Lcom/android/internal/os/BatteryStatsImpl;->getMobileTcpBytesReceived(I)J

    move-result-wide v0

    .line 676
    iget-object v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    iget v3, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsType:I

    invoke-virtual {v2, v3}, Lcom/android/internal/os/BatteryStatsImpl;->getMobileTcpBytesSent(I)J

    move-result-wide v2

    .line 675
    add-long/2addr v2, v0

    .line 677
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    iget v1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsType:I

    invoke-virtual {v0, v1}, Lcom/android/internal/os/BatteryStatsImpl;->getTotalTcpBytesReceived(I)J

    move-result-wide v0

    .line 678
    iget-object v4, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    iget v5, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsType:I

    invoke-virtual {v4, v5}, Lcom/android/internal/os/BatteryStatsImpl;->getTotalTcpBytesSent(I)J

    move-result-wide v4

    .line 677
    add-long/2addr v0, v4

    sub-long/2addr v0, v2

    .line 681
    :cond_4c
    iget-object v4, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    invoke-virtual {v4}, Lcom/android/internal/os/BatteryStatsImpl;->getRadioDataUptime()J

    move-result-wide v4

    const-wide/16 v10, 0x3e8

    div-long/2addr v4, v10

    .line 682
    const-wide/16 v10, 0x0

    cmp-long v10, v4, v10

    if-eqz v10, :cond_81

    const-wide/16 v10, 0x8

    mul-long/2addr v10, v2

    const-wide/16 v12, 0x3e8

    mul-long/2addr v10, v12

    .line 683
    div-long v4, v10, v4

    .line 685
    :goto_63
    const-wide/16 v10, 0x8

    div-long/2addr v4, v10

    long-to-double v4, v4

    div-double v4, v8, v4

    .line 686
    const-wide v8, 0x40fe848000000000L    # 125000.0

    div-double/2addr v6, v8

    .line 687
    add-long v8, v0, v2

    const-wide/16 v10, 0x0

    cmp-long v8, v8, v10

    if-eqz v8, :cond_85

    .line 688
    long-to-double v8, v2

    mul-double/2addr v4, v8

    long-to-double v8, v0

    mul-double/2addr v6, v8

    add-double/2addr v4, v6

    .line 689
    add-long/2addr v0, v2

    long-to-double v0, v0

    .line 688
    div-double v0, v4, v0

    .line 691
    :goto_80
    return-wide v0

    .line 683
    :cond_81
    const-wide/32 v4, 0x30d40

    goto :goto_63

    .line 691
    :cond_85
    const-wide/16 v0, 0x0

    goto :goto_80
.end method

.method private getProcessCpuTime(I)F
    .registers 14

    .prologue
    const-wide/high16 v10, 0x4059000000000000L    # 100.0

    .line 698
    :try_start_2
    new-instance v0, Ljava/io/FileReader;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "/proc/"

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v1

    .line 699
    const-string v2, "/stat"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    .line 698
    invoke-direct {v0, v1}, Ljava/io/FileReader;-><init>(Ljava/lang/String;)V

    .line 700
    new-instance v1, Ljava/io/BufferedReader;

    invoke-direct {v1, v0}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V

    .line 702
    invoke-virtual {v1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v2

    .line 703
    const-string v3, "\\s+"

    invoke-virtual {v2, v3}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v2

    .line 704
    const-wide/16 v4, 0x64

    const/16 v3, 0xd

    aget-object v3, v2, v3

    invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J

    move-result-wide v6

    .line 705
    const/16 v3, 0xe

    aget-object v3, v2, v3

    invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J

    move-result-wide v8

    add-long/2addr v6, v8

    .line 706
    const/16 v3, 0xf

    aget-object v3, v2, v3

    invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J

    move-result-wide v8

    add-long/2addr v6, v8

    .line 707
    const/16 v3, 0x10

    aget-object v2, v2, v3

    invoke-static {v2}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J

    move-result-wide v2

    add-long/2addr v2, v6

    .line 704
    mul-long/2addr v2, v4

    long-to-double v2, v2

    .line 708
    invoke-virtual {v1}, Ljava/io/BufferedReader;->close()V

    .line 709
    invoke-virtual {v0}, Ljava/io/FileReader;->close()V
    :try_end_5c
    .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_5c} :catch_8e

    .line 711
    :try_start_5c
    new-instance v0, Ljava/text/DecimalFormat;

    const-string v1, "#0.00"

    invoke-direct {v0, v1}, Ljava/text/DecimalFormat;-><init>(Ljava/lang/String;)V

    div-double v4, v2, v10

    invoke-virtual {v0, v4, v5}, Ljava/text/DecimalFormat;->format(D)Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/lang/Float;->valueOf(Ljava/lang/String;)Ljava/lang/Float;

    move-result-object v0

    .line 712
    invoke-virtual {v0}, Ljava/lang/Float;->floatValue()F
    :try_end_70
    .catch Ljava/lang/Exception; {:try_start_5c .. :try_end_70} :catch_72

    move-result v0

    .line 730
    :goto_71
    return v0

    .line 713
    :catch_72
    move-exception v0

    .line 718
    :try_start_73
    new-instance v0, Ljava/text/DecimalFormat;

    const-string v1, "#0,00"

    invoke-direct {v0, v1}, Ljava/text/DecimalFormat;-><init>(Ljava/lang/String;)V

    div-double v4, v2, v10

    invoke-virtual {v0, v4, v5}, Ljava/text/DecimalFormat;->format(D)Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/lang/Float;->valueOf(Ljava/lang/String;)Ljava/lang/Float;

    move-result-object v0

    .line 719
    invoke-virtual {v0}, Ljava/lang/Float;->floatValue()F
    :try_end_87
    .catch Ljava/lang/Exception; {:try_start_73 .. :try_end_87} :catch_89

    move-result v0

    goto :goto_71

    .line 720
    :catch_89
    move-exception v0

    .line 722
    div-double v0, v2, v10

    double-to-float v0, v0

    goto :goto_71

    .line 726
    :catch_8e
    move-exception v0

    .line 727
    const-string v1, "PowerUsageSummary"

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "d  ==   "

    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 728
    const/4 v0, 0x0

    goto :goto_71
.end method

.method private getResult(I)V
    .registers 7

    .prologue
    .line 540
    :try_start_0
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    if-eqz v0, :cond_33

    .line 541
    new-instance v0, Ljava/io/StringWriter;

    invoke-direct {v0}, Ljava/io/StringWriter;-><init>()V

    .line 542
    new-instance v1, Ljava/io/PrintWriter;

    invoke-direct {v1, v0}, Ljava/io/PrintWriter;-><init>(Ljava/io/Writer;)V

    .line 543
    iget-object v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    const-string v3, ""

    const/4 v4, 0x3

    invoke-virtual {v2, v1, v3, v4, p1}, Lcom/android/internal/os/BatteryStatsImpl;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;II)V

    .line 546
    invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v0

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->result_EXTRA_REPORT_CHECKIN_DETAILS:Ljava/lang/String;

    .line 548
    new-instance v0, Ljava/io/StringWriter;

    invoke-direct {v0}, Ljava/io/StringWriter;-><init>()V

    .line 549
    new-instance v1, Ljava/io/PrintWriter;

    invoke-direct {v1, v0}, Ljava/io/PrintWriter;-><init>(Ljava/io/Writer;)V

    .line 550
    iget-object v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    const/4 v3, 0x3

    invoke-virtual {v2, v1, v3, p1}, Lcom/android/internal/os/BatteryStatsImpl;->dumpCheckinLocked(Ljava/io/PrintWriter;II)V

    .line 553
    invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v0

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->result_EXTRA_REPORT_CHECKIN_DETAILS:Ljava/lang/String;

    .line 564
    :goto_32
    return-void

    .line 556
    :cond_33
    const-string v0, ""

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->result_EXTRA_REPORT_CHECKIN_DETAILS:Ljava/lang/String;

    .line 557
    const-string v0, ""

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->result_EXTRA_REPORT_CHECKIN_DETAILS:Ljava/lang/String;
    :try_end_3b
    .catch Ljava/lang/Error; {:try_start_0 .. :try_end_3b} :catch_3c

    goto :goto_32

    .line 559
    :catch_3c
    move-exception v0

    .line 560
    const-string v0, ""

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->result_EXTRA_REPORT_CHECKIN_DETAILS:Ljava/lang/String;

    .line 561
    const-string v0, ""

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->result_EXTRA_REPORT_CHECKIN_DETAILS:Ljava/lang/String;

    goto :goto_32
.end method

.method private init()V
    .registers 3

    .prologue
    .line 161
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mCallbackList:Ljava/util/List;

    .line 163
    const-string v0, "batteryinfo"

    invoke-static {v0}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;

    move-result-object v0

    .line 162
    invoke-static {v0}, Lcom/android/internal/app/IBatteryStats$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IBatteryStats;

    move-result-object v0

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mBatteryInfo:Lcom/android/internal/app/IBatteryStats;

    .line 164
    new-instance v0, Lcom/android/internal/os/PowerProfile;

    iget-object v1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mContext:Landroid/content/Context;

    invoke-direct {v0, v1}, Lcom/android/internal/os/PowerProfile;-><init>(Landroid/content/Context;)V

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mPowerProfile:Lcom/android/internal/os/PowerProfile;

    .line 165
    const/4 v0, 0x0

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    .line 167
    :try_start_1f
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mContext:Landroid/content/Context;

    const-string v1, "sensor"

    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/SensorManager;

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mSensorManager:Landroid/hardware/SensorManager;
    :try_end_2b
    .catch Ljava/lang/Exception; {:try_start_1f .. :try_end_2b} :catch_2c

    .line 170
    :goto_2b
    return-void

    .line 168
    :catch_2c
    move-exception v0

    goto :goto_2b
.end method

.method private initForRefresh()V
    .registers 3

    .prologue
    const-wide/16 v0, 0x0

    .line 182
    iput-wide v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mMaxPower:D

    .line 183
    iput-wide v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    .line 185
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mUsageList:Ljava/util/List;

    invoke-interface {v0}, Ljava/util/List;->clear()V

    .line 186
    return-void
.end method

.method private load()V
    .registers 5
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/Exception;
        }
    .end annotation

    .prologue
    const/4 v3, 0x0

    .line 742
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mBatteryInfo:Lcom/android/internal/app/IBatteryStats;

    invoke-interface {v0}, Lcom/android/internal/app/IBatteryStats;->getStatistics()[B

    move-result-object v0

    .line 743
    invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel;

    move-result-object v1

    .line 744
    array-length v2, v0

    .line 745
    invoke-virtual {v1, v0, v3, v2}, Landroid/os/Parcel;->unmarshall([BII)V

    .line 746
    invoke-virtual {v1, v3}, Landroid/os/Parcel;->setDataPosition(I)V

    .line 747
    sget-object v0, Lcom/android/internal/os/BatteryStatsImpl;->CREATOR:Landroid/os/Parcelable$Creator;

    .line 748
    invoke-interface {v0, v1}, Landroid/os/Parcelable$Creator;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/android/internal/os/BatteryStatsImpl;

    .line 747
    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    .line 749
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0xa

    if-ne v0, v1, :cond_29

    .line 750
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    iget v1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsType:I

    invoke-virtual {v0, v1}, Lcom/android/internal/os/BatteryStatsImpl;->distributeWorkLocked(I)V

    .line 752
    :cond_29
    return-void
.end method

.method private notifyFailed()V
    .registers 3

    .prologue
    .line 132
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mCallbackList:Ljava/util/List;

    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v0

    .line 133
    if-lez v0, :cond_d

    .line 134
    add-int/lit8 v0, v0, -0x1

    move v1, v0

    :goto_b
    if-gez v1, :cond_e

    .line 141
    :cond_d
    return-void

    .line 135
    :cond_e
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mCallbackList:Ljava/util/List;

    invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;

    .line 136
    if-eqz v0, :cond_1b

    .line 137
    invoke-interface {v0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;->failed()V

    .line 134
    :cond_1b
    add-int/lit8 v0, v1, -0x1

    move v1, v0

    goto :goto_b
.end method

.method private notifySuccess(Ljava/util/List;)V
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List",
            "<",
            "Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 115
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mCallbackList:Ljava/util/List;

    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v0

    .line 116
    if-lez v0, :cond_d

    .line 117
    add-int/lit8 v0, v0, -0x1

    move v1, v0

    :goto_b
    if-gez v1, :cond_e

    .line 129
    :cond_d
    return-void

    .line 118
    :cond_e
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mCallbackList:Ljava/util/List;

    invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;

    .line 119
    if-eqz v0, :cond_32

    .line 120
    iget-object v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mLabel:Ljava/lang/String;

    invoke-interface {v0, v2}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;->setLabel(Ljava/lang/String;)V

    .line 121
    iget-wide v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mMaxPower:D

    invoke-interface {v0, v2, v3}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;->setMaxPower(D)V

    .line 122
    iget-wide v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsPeriod:J

    invoke-interface {v0, v2, v3}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;->setStatsPeriod(J)V

    .line 123
    iget-wide v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    invoke-interface {v0, v2, v3}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;->setTotalPower(D)V

    .line 124
    invoke-interface {v0, p1}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;->setData(Ljava/util/List;)V

    .line 125
    invoke-interface {v0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;->complete()V

    .line 117
    :cond_32
    add-int/lit8 v0, v1, -0x1

    move v1, v0

    goto :goto_b
.end method

.method private processAliveAppUsage()V
    .registers 15

    .prologue
    .line 572
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mContext:Landroid/content/Context;

    invoke-virtual {v0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;

    move-result-object v1

    .line 573
    new-instance v8, Ljava/util/TreeMap;

    invoke-direct {v8}, Ljava/util/TreeMap;-><init>()V

    .line 574
    new-instance v9, Ljava/util/TreeMap;

    invoke-direct {v9}, Ljava/util/TreeMap;-><init>()V

    .line 576
    const/4 v0, 0x0

    .line 579
    const/16 v2, 0x2000

    :try_start_13
    invoke-virtual {v1, v2}, Landroid/content/pm/PackageManager;->getInstalledApplications(I)Ljava/util/List;
    :try_end_16
    .catch Ljava/lang/Exception; {:try_start_13 .. :try_end_16} :catch_1d

    move-result-object v0

    move-object v2, v0

    .line 585
    :goto_18
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRunningTask:Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$RunningTask;

    if-nez v0, :cond_2a

    .line 663
    :goto_1c
    return-void

    .line 580
    :catch_1d
    move-exception v1

    .line 581
    const-string v2, "PowerUsageRankService"

    const-string v3, "Getting local installed applications failed."

    invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 582
    invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V

    move-object v2, v0

    goto :goto_18

    .line 589
    :cond_2a
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRunningTask:Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$RunningTask;

    .line 590
    invoke-interface {v0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$RunningTask;->getRunningAppProcesses()Ljava/util/List;

    move-result-object v6

    .line 596
    if-eqz v2, :cond_40

    invoke-interface {v2}, Ljava/util/List;->size()I

    move-result v0

    if-lez v0, :cond_40

    .line 597
    const/4 v0, 0x0

    move v3, v0

    :goto_3a
    invoke-interface {v2}, Ljava/util/List;->size()I

    move-result v0

    if-lt v3, v0, :cond_61

    .line 641
    :cond_40
    invoke-virtual {v8}, Ljava/util/TreeMap;->keySet()Ljava/util/Set;

    move-result-object v0

    .line 642
    if-eqz v0, :cond_56

    invoke-interface {v0}, Ljava/util/Set;->size()I

    move-result v1

    if-lez v1, :cond_56

    .line 643
    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v10

    .line 644
    :goto_50
    invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-nez v0, :cond_f2

    .line 660
    :cond_56
    invoke-virtual {v8}, Ljava/util/TreeMap;->clear()V

    .line 661
    invoke-virtual {v9}, Ljava/util/TreeMap;->clear()V

    .line 662
    const-string v0, "Percentage of power consumed"

    iput-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mLabel:Ljava/lang/String;

    goto :goto_1c

    .line 599
    :cond_61
    invoke-interface {v2, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/content/pm/ApplicationInfo;

    .line 601
    invoke-interface {v6}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v7

    .line 602
    :cond_6b
    :goto_6b
    invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-nez v1, :cond_75

    .line 597
    :cond_71
    add-int/lit8 v0, v3, 0x1

    move v3, v0

    goto :goto_3a

    .line 604
    :cond_75
    invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/cleanmaster/activitymanagerhelper/RunningAppProcessInfo;

    .line 605
    iget-object v10, v1, Lcom/cleanmaster/activitymanagerhelper/RunningAppProcessInfo;->processName:Ljava/lang/String;

    .line 606
    iget-object v11, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;

    .line 607
    if-eqz v11, :cond_6b

    if-eqz v10, :cond_6b

    .line 611
    invoke-virtual {v11, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-eqz v4, :cond_6b

    .line 615
    iget v4, v1, Lcom/cleanmaster/activitymanagerhelper/RunningAppProcessInfo;->pid:I

    invoke-direct {p0, v4}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->getProcessCpuTime(I)F

    move-result v4

    float-to-double v4, v4

    .line 616
    const-string v12, "com.ijinshan.kbatterydoctor"

    invoke-virtual {v12, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v12

    if-nez v12, :cond_71

    .line 617
    const-string v12, "com.ijinshan.mguard"

    invoke-virtual {v12, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v12

    if-nez v12, :cond_71

    .line 618
    const-string v12, "com.ijinshan.browser"

    invoke-virtual {v12, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v11

    if-nez v11, :cond_71

    .line 619
    const-string v11, "com.ijinshan.kbatterydoctor_en"

    invoke-virtual {v11, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v11

    if-nez v11, :cond_71

    .line 620
    const-string v11, "com.ijinshan.mguard"

    invoke-virtual {v11, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v11

    if-nez v11, :cond_71

    .line 621
    const-string v11, "com.ijinshan.browser"

    invoke-virtual {v11, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v11

    if-nez v11, :cond_71

    .line 625
    iget v11, v1, Lcom/cleanmaster/activitymanagerhelper/RunningAppProcessInfo;->uid:I

    .line 626
    invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v1

    invoke-virtual {v8, v1}, Ljava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Ljava/lang/Double;

    .line 627
    if-eqz v1, :cond_de

    .line 628
    invoke-virtual {v1}, Ljava/lang/Double;->doubleValue()D

    move-result-wide v12

    add-double/2addr v4, v12

    .line 629
    invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v1

    invoke-static {v4, v5}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;

    move-result-object v12

    invoke-virtual {v8, v1, v12}, Ljava/util/TreeMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 631
    :cond_de
    invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v1

    invoke-static {v4, v5}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;

    move-result-object v4

    invoke-virtual {v8, v1, v4}, Ljava/util/TreeMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 632
    invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v1

    invoke-virtual {v9, v1, v10}, Ljava/util/TreeMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto/16 :goto_6b

    .line 645
    :cond_f2
    invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Integer;

    invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

    move-result v5

    .line 646
    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v0

    invoke-virtual {v8, v0}, Ljava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/Double;

    invoke-virtual {v0}, Ljava/lang/Double;->doubleValue()D

    move-result-wide v6

    .line 647
    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v0

    invoke-virtual {v9, v0}, Ljava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Ljava/lang/String;

    .line 648
    new-instance v0, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;

    iget-object v1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mContext:Landroid/content/Context;

    .line 649
    sget-object v3, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageDetail$DrainType;->APP:Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageDetail$DrainType;

    const/4 v4, 0x0

    .line 648
    invoke-direct/range {v0 .. v7}, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;-><init>(Landroid/content/Context;Ljava/lang/String;Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageDetail$DrainType;IID)V

    .line 650
    iget-object v1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mUsageList:Ljava/util/List;

    invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 652
    iget-wide v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    add-double/2addr v0, v6

    iput-wide v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    goto/16 :goto_50
.end method

.method private processAppUsage()V
    .registers 55

    .prologue
    .line 234
    const/4 v6, -0x1

    .line 235
    move-object/from16 v0, p0

    iget v0, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsType:I

    move/from16 v37, v0

    .line 236
    move-object/from16 v0, p0

    iget-object v4, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mPowerProfile:Lcom/android/internal/os/PowerProfile;

    invoke-virtual {v4}, Lcom/android/internal/os/PowerProfile;->getNumSpeedSteps()I

    move-result v38

    .line 237
    move/from16 v0, v38

    new-array v0, v0, [D

    move-object/from16 v39, v0

    .line 238
    move/from16 v0, v38

    new-array v0, v0, [J

    move-object/from16 v40, v0

    .line 239
    const/4 v4, 0x0

    :goto_1c
    move/from16 v0, v38

    if-lt v4, v0, :cond_c0

    .line 243
    invoke-direct/range {p0 .. p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->getAverageDataCost()D

    move-result-wide v42

    .line 244
    const-string v4, "Percentage of power consumed"

    move-object/from16 v0, p0

    iput-object v4, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mLabel:Ljava/lang/String;

    .line 245
    move-object/from16 v0, p0

    iget-object v4, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    .line 246
    invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J

    move-result-wide v8

    const-wide/16 v10, 0x3e8

    mul-long/2addr v8, v10

    .line 245
    move/from16 v0, v37

    invoke-virtual {v4, v8, v9, v0}, Lcom/android/internal/os/BatteryStatsImpl;->computeBatteryRealtime(JI)J

    move-result-wide v44

    .line 247
    const-wide/16 v10, 0x0

    .line 248
    const/4 v12, 0x0

    .line 249
    move-wide/from16 v0, v44

    move-object/from16 v2, p0

    iput-wide v0, v2, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStatsPeriod:J

    .line 250
    move-object/from16 v0, p0

    iget-object v4, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    invoke-virtual {v4}, Lcom/android/internal/os/BatteryStatsImpl;->getUidStats()Landroid/util/SparseArray;

    move-result-object v41

    .line 251
    invoke-virtual/range {v41 .. v41}, Landroid/util/SparseArray;->size()I

    move-result v46

    .line 252
    const/4 v4, 0x0

    move/from16 v36, v4

    move v4, v6

    :goto_54
    move/from16 v0, v36

    move/from16 v1, v46

    if-lt v0, v1, :cond_d0

    .line 515
    if-eqz v12, :cond_bf

    .line 516
    move-object/from16 v0, p0

    iget-object v4, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    .line 517
    invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J

    move-result-wide v6

    const-wide/16 v8, 0x3e8

    mul-long/2addr v6, v8

    .line 516
    move/from16 v0, v37

    invoke-virtual {v4, v6, v7, v0}, Lcom/android/internal/os/BatteryStatsImpl;->computeBatteryUptime(JI)J

    move-result-wide v4

    .line 517
    const-wide/16 v6, 0x3e8

    .line 516
    div-long/2addr v4, v6

    .line 519
    move-object/from16 v0, p0

    iget-object v6, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J

    move-result-wide v8

    move/from16 v0, v37

    invoke-virtual {v6, v8, v9, v0}, Lcom/android/internal/os/BatteryStatsImpl;->getScreenOnTime(JI)J

    move-result-wide v6

    .line 520
    const-wide/16 v8, 0x3e8

    .line 519
    div-long/2addr v6, v8

    sub-long v6, v10, v6

    sub-long/2addr v4, v6

    .line 521
    const-wide/16 v6, 0x0

    cmp-long v6, v4, v6

    if-lez v6, :cond_bf

    .line 522
    long-to-double v6, v4

    move-object/from16 v0, p0

    iget-object v8, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mPowerProfile:Lcom/android/internal/os/PowerProfile;

    .line 523
    const-string v9, "cpu.awake"

    invoke-virtual {v8, v9}, Lcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;)D

    move-result-wide v8

    .line 522
    mul-double/2addr v6, v8

    .line 523
    const-wide v8, 0x408f400000000000L    # 1000.0

    .line 522
    div-double/2addr v6, v8

    .line 524
    iget-wide v8, v12, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->wakeLockTime:J

    add-long/2addr v4, v8

    iput-wide v4, v12, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->wakeLockTime:J

    .line 525
    iget-wide v4, v12, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->mValue:D

    add-double/2addr v4, v6

    iput-wide v4, v12, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->mValue:D

    .line 526
    iget-wide v4, v12, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->mValue:D

    move-object/from16 v0, p0

    iget-wide v8, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mMaxPower:D

    cmpl-double v4, v4, v8

    if-lez v4, :cond_b6

    .line 527
    iget-wide v4, v12, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->mValue:D

    move-object/from16 v0, p0

    iput-wide v4, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mMaxPower:D

    .line 529
    :cond_b6
    move-object/from16 v0, p0

    iget-wide v4, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    add-double/2addr v4, v6

    move-object/from16 v0, p0

    iput-wide v4, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    .line 536
    :cond_bf
    return-void

    .line 240
    :cond_c0
    move-object/from16 v0, p0

    iget-object v5, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mPowerProfile:Lcom/android/internal/os/PowerProfile;

    .line 241
    const-string v7, "cpu.active"

    .line 240
    invoke-virtual {v5, v7, v4}, Lcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;I)D

    move-result-wide v8

    aput-wide v8, v39, v4

    .line 239
    add-int/lit8 v4, v4, 0x1

    goto/16 :goto_1c

    .line 253
    :cond_d0
    move-object/from16 v0, v41

    move/from16 v1, v36

    invoke-virtual {v0, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;

    move-result-object v9

    check-cast v9, Landroid/os/BatteryStats$Uid;

    .line 255
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getUid()I

    move-result v20

    .line 256
    const/16 v5, 0x2710

    move/from16 v0, v20

    if-gt v0, v5, :cond_f0

    if-eqz v20, :cond_f0

    move v6, v4

    move-wide v4, v10

    .line 252
    :goto_e8
    add-int/lit8 v7, v36, 0x1

    move/from16 v36, v7

    move-wide v10, v4

    move v4, v6

    goto/16 :goto_54

    .line 260
    :cond_f0
    const-wide/16 v18, 0x0

    .line 261
    const-wide/16 v16, 0x0

    .line 262
    const/4 v5, 0x0

    .line 264
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getProcessStats()Ljava/util/Map;

    move-result-object v8

    .line 265
    const-wide/16 v14, 0x0

    .line 266
    const-wide/16 v6, 0x0

    .line 267
    const-wide/16 v26, 0x0

    .line 268
    const/16 v24, 0x0

    .line 269
    const/16 v25, 0x0

    .line 270
    const-wide/16 v30, 0x0

    .line 271
    const-wide/16 v28, 0x0

    .line 274
    invoke-interface {v8}, Ljava/util/Map;->size()I

    move-result v13

    if-lez v13, :cond_492

    .line 277
    invoke-interface {v8}, Ljava/util/Map;->entrySet()Ljava/util/Set;

    move-result-object v8

    invoke-interface {v8}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v32

    move-object v8, v5

    move v13, v4

    .line 276
    :goto_117
    invoke-interface/range {v32 .. v32}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-nez v4, :cond_221

    move-wide v4, v14

    move-wide/from16 v14, v18

    move-wide/from16 v18, v6

    move-object v6, v8

    .line 327
    :goto_123
    cmp-long v7, v18, v4

    if-lez v7, :cond_484

    move-wide/from16 v16, v18

    .line 331
    :goto_129
    const-wide v4, 0x408f400000000000L    # 1000.0

    div-double v22, v14, v4

    .line 335
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getWakelockStats()Ljava/util/Map;

    move-result-object v4

    .line 337
    invoke-interface {v4}, Ljava/util/Map;->entrySet()Ljava/util/Set;

    move-result-object v4

    invoke-interface {v4}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v5

    move/from16 v20, v24

    move-wide/from16 v14, v26

    .line 336
    :cond_140
    :goto_140
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-nez v4, :cond_305

    .line 349
    const-wide/16 v4, 0x3e8

    div-long v48, v14, v4

    .line 350
    add-long v14, v10, v48

    .line 353
    move-wide/from16 v0, v48

    long-to-double v4, v0

    move-object/from16 v0, p0

    iget-object v7, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mPowerProfile:Lcom/android/internal/os/PowerProfile;

    .line 354
    const-string v8, "cpu.awake"

    invoke-virtual {v7, v8}, Lcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;)D

    move-result-wide v10

    .line 353
    mul-double/2addr v4, v10

    .line 354
    const-wide v10, 0x408f400000000000L    # 1000.0

    div-double/2addr v4, v10

    add-double v22, v22, v4

    .line 358
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getPackageStats()Ljava/util/Map;

    move-result-object v4

    .line 360
    invoke-interface {v4}, Ljava/util/Map;->entrySet()Ljava/util/Set;

    move-result-object v4

    invoke-interface {v4}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v5

    move/from16 v21, v25

    .line 359
    :goto_170
    invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-nez v4, :cond_32e

    .line 367
    const-wide/16 v10, 0x0

    .line 368
    const-wide/16 v4, 0x0

    .line 374
    :try_start_17a
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getUid()I

    move-result v7

    invoke-static {v7}, Landroid/net/TrafficStats;->getUidRxBytes(I)J

    move-result-wide v10

    .line 375
    const-wide/16 v24, 0x0

    cmp-long v7, v10, v24

    if-lez v7, :cond_346

    .line 376
    :goto_188
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getUid()I

    move-result v7

    invoke-static {v7}, Landroid/net/TrafficStats;->getUidTxBytes(I)J
    :try_end_18f
    .catch Ljava/lang/Error; {:try_start_17a .. :try_end_18f} :catch_34e

    move-result-wide v4

    .line 377
    const-wide/16 v24, 0x0

    cmp-long v7, v4, v24

    if-lez v7, :cond_34a

    .line 378
    :goto_196
    add-long v24, v10, v4

    move-wide/from16 v0, v24

    long-to-double v0, v0

    move-wide/from16 v24, v0

    mul-double v24, v24, v42

    add-double v24, v24, v22

    .line 384
    :try_start_1a1
    move-wide/from16 v0, v44

    move/from16 v2, v37

    invoke-virtual {v9, v0, v1, v2}, Landroid/os/BatteryStats$Uid;->getWifiRunningTime(JI)J

    move-result-wide v22

    const-wide/16 v26, 0x3e8

    div-long v22, v22, v26
    :try_end_1ad
    .catch Ljava/lang/Error; {:try_start_1a1 .. :try_end_1ad} :catch_472

    move-wide/from16 v26, v22

    move-wide/from16 v22, v4

    move-wide/from16 v4, v24

    move-wide/from16 v24, v10

    .line 390
    :goto_1b5
    move-wide/from16 v0, v26

    long-to-double v10, v0

    move-object/from16 v0, p0

    iget-object v7, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mPowerProfile:Lcom/android/internal/os/PowerProfile;

    .line 391
    const-string/jumbo v8, "wifi.on"

    invoke-virtual {v7, v8}, Lcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;)D

    move-result-wide v32

    .line 390
    mul-double v10, v10, v32

    .line 391
    const-wide v32, 0x408f400000000000L    # 1000.0

    div-double v10, v10, v32

    add-double/2addr v4, v10

    .line 395
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getSensorStats()Ljava/util/Map;

    move-result-object v7

    .line 398
    invoke-interface {v7}, Ljava/util/Map;->entrySet()Ljava/util/Set;

    move-result-object v7

    invoke-interface {v7}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v7

    move-wide/from16 v32, v4

    .line 397
    :goto_1db
    invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-nez v4, :cond_35d

    .line 432
    move-wide/from16 v0, v44

    move/from16 v2, v37

    invoke-virtual {v9, v0, v1, v2}, Landroid/os/BatteryStats$Uid;->getVideoTurnedOnTime(JI)J

    move-result-wide v34

    .line 433
    move-wide/from16 v0, v44

    move/from16 v2, v37

    invoke-virtual {v9, v0, v1, v2}, Landroid/os/BatteryStats$Uid;->getAudioTurnedOnTime(JI)J

    move-result-wide v50

    .line 434
    const-wide/16 v4, 0x0

    cmpl-double v4, v32, v4

    if-gez v4, :cond_1fd

    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getUid()I

    move-result v4

    if-nez v4, :cond_47a

    .line 436
    :cond_1fd
    const-string v4, "com.ijinshan.kbatterydoctor"

    invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-nez v4, :cond_47a

    .line 437
    const-string v4, "com.ijinshan.kbatterydoctor_en"

    invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-nez v4, :cond_47a

    .line 438
    const-string v4, "com.ijinshan.mguard"

    invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-nez v4, :cond_47a

    .line 439
    const-string v4, "com.ijinshan.browser"

    invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-eqz v4, :cond_3c9

    move-wide v4, v14

    move v6, v13

    .line 440
    goto/16 :goto_e8

    .line 277
    :cond_221
    invoke-interface/range {v32 .. v32}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/util/Map$Entry;

    .line 281
    invoke-interface {v4}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Landroid/os/BatteryStats$Uid$Proc;

    .line 282
    move/from16 v0, v37

    invoke-virtual {v5, v0}, Landroid/os/BatteryStats$Uid$Proc;->getUserTime(I)J

    move-result-wide v22

    .line 283
    move/from16 v0, v37

    invoke-virtual {v5, v0}, Landroid/os/BatteryStats$Uid$Proc;->getSystemTime(I)J

    move-result-wide v34

    .line 284
    move/from16 v0, v37

    invoke-virtual {v5, v0}, Landroid/os/BatteryStats$Uid$Proc;->getForegroundTime(I)J

    move-result-wide v48

    .line 285
    const-wide/16 v50, 0xa

    mul-long v48, v48, v50

    add-long v6, v6, v48

    .line 286
    add-long v22, v22, v34

    const-wide/16 v34, 0xa

    mul-long v34, v34, v22

    .line 289
    const/16 v22, 0x0

    .line 291
    const/16 v21, 0x0

    move/from16 v52, v21

    move/from16 v21, v22

    move/from16 v22, v52

    :goto_255
    move/from16 v0, v22

    move/from16 v1, v38

    if-lt v0, v1, :cond_2ab

    .line 296
    if-nez v21, :cond_48e

    .line 297
    const/4 v5, 0x1

    .line 299
    :goto_25e
    const-wide/16 v22, 0x0

    .line 300
    const/16 v21, 0x0

    :goto_262
    move/from16 v0, v21

    move/from16 v1, v38

    if-lt v0, v1, :cond_2ca

    .line 306
    add-long v14, v14, v34

    .line 307
    add-double v18, v18, v22

    .line 308
    if-eqz v8, :cond_276

    .line 309
    const-string v5, "*"

    invoke-virtual {v8, v5}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v5

    if-eqz v5, :cond_2e7

    .line 311
    :cond_276
    invoke-interface {v4}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Ljava/lang/String;

    move-wide/from16 v16, v22

    .line 317
    :goto_27e
    const-string v8, "com.ijinshan.mguard"

    invoke-interface {v4}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v21

    move-object/from16 v0, v21

    invoke-virtual {v8, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v8

    if-nez v8, :cond_2a6

    .line 318
    const-string v8, "com.ijinshan.kbatterydoctor"

    invoke-interface {v4}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v21

    move-object/from16 v0, v21

    invoke-virtual {v8, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v8

    if-nez v8, :cond_2a6

    .line 319
    const-string v8, "com.ijinshan.kbatterydoctor_en"

    invoke-interface {v4}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v4

    invoke-virtual {v8, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-eqz v4, :cond_488

    :cond_2a6
    move-object v8, v5

    move/from16 v13, v20

    .line 320
    goto/16 :goto_117

    .line 292
    :cond_2ab
    move/from16 v0, v22

    move/from16 v1, v37

    invoke-virtual {v5, v0, v1}, Landroid/os/BatteryStats$Uid$Proc;->getTimeAtCpuSpeedStep(II)J

    move-result-wide v48

    aput-wide v48, v40, v22

    .line 294
    move/from16 v0, v21

    int-to-long v0, v0

    move-wide/from16 v48, v0

    aget-wide v50, v40, v22

    add-long v48, v48, v50

    move-wide/from16 v0, v48

    long-to-int v0, v0

    move/from16 v23, v0

    .line 291
    add-int/lit8 v21, v22, 0x1

    move/from16 v22, v21

    move/from16 v21, v23

    goto :goto_255

    .line 301
    :cond_2ca
    aget-wide v48, v40, v21

    move-wide/from16 v0, v48

    long-to-double v0, v0

    move-wide/from16 v48, v0

    .line 302
    int-to-double v0, v5

    move-wide/from16 v50, v0

    .line 301
    div-double v48, v48, v50

    .line 303
    move-wide/from16 v0, v34

    long-to-double v0, v0

    move-wide/from16 v50, v0

    mul-double v48, v48, v50

    .line 304
    aget-wide v50, v39, v21

    mul-double v48, v48, v50

    add-double v22, v22, v48

    .line 300
    add-int/lit8 v21, v21, 0x1

    goto/16 :goto_262

    .line 312
    :cond_2e7
    cmpg-double v5, v16, v22

    if-gez v5, :cond_48b

    .line 313
    invoke-interface {v4}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Ljava/lang/String;

    const-string v21, "*"

    move-object/from16 v0, v21

    invoke-virtual {v5, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v5

    if-nez v5, :cond_48b

    .line 315
    invoke-interface {v4}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Ljava/lang/String;

    move-wide/from16 v16, v22

    goto/16 :goto_27e

    .line 337
    :cond_305
    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/util/Map$Entry;

    .line 338
    invoke-interface {v4}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Landroid/os/BatteryStats$Uid$Wakelock;

    .line 342
    const/4 v7, 0x0

    invoke-virtual {v4, v7}, Landroid/os/BatteryStats$Uid$Wakelock;->getWakeTime(I)Landroid/os/BatteryStats$Timer;

    move-result-object v4

    .line 343
    if-eqz v4, :cond_140

    .line 344
    move-wide/from16 v0, v44

    move/from16 v2, v37

    invoke-virtual {v4, v0, v1, v2}, Landroid/os/BatteryStats$Timer;->getTotalTimeLocked(JI)J

    move-result-wide v26

    add-long v14, v14, v26

    .line 346
    move/from16 v0, v37

    invoke-virtual {v4, v0}, Landroid/os/BatteryStats$Timer;->getCountLocked(I)I

    move-result v4

    add-int v4, v4, v20

    move/from16 v20, v4

    goto/16 :goto_140

    .line 360
    :cond_32e
    invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/util/Map$Entry;

    .line 361
    invoke-interface {v4}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Landroid/os/BatteryStats$Uid$Pkg;

    .line 362
    move/from16 v0, v37

    invoke-virtual {v4, v0}, Landroid/os/BatteryStats$Uid$Pkg;->getWakeups(I)I

    move-result v4

    add-int v4, v4, v21

    move/from16 v21, v4

    goto/16 :goto_170

    .line 375
    :cond_346
    const-wide/16 v10, 0x0

    goto/16 :goto_188

    .line 377
    :cond_34a
    const-wide/16 v4, 0x0

    goto/16 :goto_196

    .line 385
    :catch_34e
    move-exception v7

    move-wide/from16 v24, v22

    .line 386
    :goto_351
    const-wide/16 v22, 0x0

    move-wide/from16 v26, v22

    move-wide/from16 v22, v4

    move-wide/from16 v4, v24

    move-wide/from16 v24, v10

    goto/16 :goto_1b5

    .line 398
    :cond_35d
    invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/util/Map$Entry;

    .line 399
    invoke-interface {v4}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Landroid/os/BatteryStats$Uid$Sensor;

    .line 400
    invoke-virtual {v4}, Landroid/os/BatteryStats$Uid$Sensor;->getHandle()I

    move-result v8

    .line 401
    invoke-virtual {v4}, Landroid/os/BatteryStats$Uid$Sensor;->getSensorTime()Landroid/os/BatteryStats$Timer;

    move-result-object v4

    .line 402
    move-wide/from16 v0, v44

    move/from16 v2, v37

    invoke-virtual {v4, v0, v1, v2}, Landroid/os/BatteryStats$Timer;->getTotalTimeLocked(JI)J

    move-result-wide v4

    const-wide/16 v10, 0x3e8

    div-long v34, v4, v10

    .line 403
    const-wide/16 v4, 0x0

    .line 404
    packed-switch v8, :pswitch_data_49e

    .line 411
    move-object/from16 v0, p0

    iget-object v10, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mSensorManager:Landroid/hardware/SensorManager;

    if-nez v10, :cond_3b5

    move-wide/from16 v10, v30

    move-wide/from16 v30, v4

    .line 425
    :goto_38c
    add-long v4, v28, v34

    .line 426
    move-wide/from16 v0, v34

    long-to-double v0, v0

    move-wide/from16 v28, v0

    mul-double v28, v28, v30

    const-wide v30, 0x408f400000000000L    # 1000.0

    div-double v28, v28, v30

    add-double v28, v28, v32

    move-wide/from16 v30, v10

    move-wide/from16 v32, v28

    move-wide/from16 v28, v4

    goto/16 :goto_1db

    .line 406
    :pswitch_3a6
    move-object/from16 v0, p0

    iget-object v4, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mPowerProfile:Lcom/android/internal/os/PowerProfile;

    .line 407
    const-string v5, "gps.on"

    invoke-virtual {v4, v5}, Lcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;)D

    move-result-wide v4

    move-wide/from16 v30, v4

    move-wide/from16 v10, v34

    .line 409
    goto :goto_38c

    .line 414
    :cond_3b5
    move-object/from16 v0, p0

    iget-object v10, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mSensorManager:Landroid/hardware/SensorManager;

    .line 415
    invoke-virtual {v10, v8}, Landroid/hardware/SensorManager;->getDefaultSensor(I)Landroid/hardware/Sensor;

    move-result-object v8

    .line 416
    if-eqz v8, :cond_47e

    .line 417
    invoke-virtual {v8}, Landroid/hardware/Sensor;->getPower()F

    move-result v4

    float-to-double v4, v4

    move-wide/from16 v10, v30

    move-wide/from16 v30, v4

    goto :goto_38c

    .line 442
    :cond_3c9
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getUid()I

    move-result v4

    if-ne v4, v13, :cond_3d3

    move-wide v4, v14

    move v6, v13

    .line 443
    goto/16 :goto_e8

    .line 449
    :cond_3d3
    const-string v4, "com.ijinshan.duba"

    invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-nez v4, :cond_3fb

    .line 450
    const-string v4, "com.ijinshan.ShouJiKong.AndroidDaemon"

    .line 451
    invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-nez v4, :cond_3fb

    .line 452
    const-string v4, "com.ijinshan.browser"

    .line 453
    invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-nez v4, :cond_3fb

    .line 454
    const-string v4, "com.cleanmaster.mguard_cn"

    .line 455
    invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-nez v4, :cond_3fb

    .line 456
    const-string v4, "com.cleanmaster.mguard"

    .line 457
    invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v4

    if-eqz v4, :cond_477

    .line 458
    :cond_3fb
    const-wide/high16 v4, 0x4024000000000000L    # 10.0

    div-double v10, v32, v4

    .line 465
    :goto_3ff
    new-instance v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;

    move-object/from16 v0, p0

    iget-object v5, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mContext:Landroid/content/Context;

    .line 466
    sget-object v7, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageDetail$DrainType;->APP:Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageDetail$DrainType;

    const/4 v8, 0x0

    .line 465
    invoke-direct/range {v4 .. v11}, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;-><init>(Landroid/content/Context;Ljava/lang/String;Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageDetail$DrainType;ILandroid/os/BatteryStats$Uid;D)V

    .line 473
    move-wide/from16 v0, v34

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->mVideoOnTime:J

    .line 474
    move-wide/from16 v0, v50

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->mAudioTime:J

    .line 475
    move-wide/from16 v0, v16

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->cpuTime:J

    .line 476
    move-wide/from16 v0, v28

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->mSensorTime:J

    .line 477
    move-wide/from16 v0, v30

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->gpsTime:J

    .line 478
    move-wide/from16 v0, v26

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->wifiRunningTime:J

    .line 479
    move-wide/from16 v0, v18

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->cpuFgTime:J

    .line 480
    move-wide/from16 v0, v48

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->wakeLockTime:J

    .line 481
    move/from16 v0, v20

    iput v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->wakelockAmount:I

    .line 482
    move/from16 v0, v21

    iput v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->wakelockCount:I

    .line 483
    move-wide/from16 v0, v24

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->tcpBytesReceived:J

    .line 484
    move-wide/from16 v0, v22

    iput-wide v0, v4, Lcom/ijinshan/kbatterydoctor/powermanager/BatterySipper;->tcpBytesSent:J

    .line 492
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getUid()I

    move-result v5

    const/16 v6, 0x3f2

    if-eq v5, v6, :cond_452

    .line 494
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getUid()I

    move-result v5

    const/16 v6, 0x7d0

    if-eq v5, v6, :cond_452

    .line 497
    move-object/from16 v0, p0

    iget-object v5, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mUsageList:Ljava/util/List;

    invoke-interface {v5, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 499
    :cond_452
    invoke-virtual {v9}, Landroid/os/BatteryStats$Uid;->getUid()I

    move-result v5

    if-nez v5, :cond_475

    .line 503
    :goto_458
    move-object/from16 v0, p0

    iget-wide v6, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mMaxPower:D

    cmpl-double v5, v10, v6

    if-lez v5, :cond_464

    .line 504
    move-object/from16 v0, p0

    iput-wide v10, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mMaxPower:D

    .line 507
    :cond_464
    move-object/from16 v0, p0

    iget-wide v6, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    add-double/2addr v6, v10

    move-object/from16 v0, p0

    iput-wide v6, v0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    move-object v12, v4

    move v6, v13

    move-wide v4, v14

    goto/16 :goto_e8

    .line 385
    :catch_472
    move-exception v7

    goto/16 :goto_351

    :cond_475
    move-object v4, v12

    goto :goto_458

    :cond_477
    move-wide/from16 v10, v32

    goto :goto_3ff

    :cond_47a
    move-wide v4, v14

    move v6, v13

    goto/16 :goto_e8

    :cond_47e
    move-wide/from16 v10, v30

    move-wide/from16 v30, v4

    goto/16 :goto_38c

    :cond_484
    move-wide/from16 v16, v4

    goto/16 :goto_129

    :cond_488
    move-object v8, v5

    goto/16 :goto_117

    :cond_48b
    move-object v5, v8

    goto/16 :goto_27e

    :cond_48e
    move/from16 v5, v21

    goto/16 :goto_25e

    :cond_492
    move v13, v4

    move-wide/from16 v52, v14

    move-wide/from16 v14, v18

    move-wide/from16 v18, v6

    move-object v6, v5

    move-wide/from16 v4, v52

    goto/16 :goto_123

    .line 404
    :pswitch_data_49e
    .packed-switch -0x2710
        :pswitch_3a6
    .end packed-switch
.end method

.method private refreshStats()I
    .registers 7

    .prologue
    const/16 v0, 0xc8

    const-wide/16 v4, 0x0

    .line 190
    const/4 v1, 0x0

    .line 192
    iget-object v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    if-nez v2, :cond_c

    .line 194
    :try_start_9
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->load()V
    :try_end_c
    .catch Ljava/lang/Exception; {:try_start_9 .. :try_end_c} :catch_13

    .line 204
    :cond_c
    :goto_c
    if-nez v1, :cond_36

    .line 206
    iget-object v1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mStats:Lcom/android/internal/os/BatteryStatsImpl;

    if-nez v1, :cond_1c

    .line 229
    :cond_12
    :goto_12
    return v0

    .line 195
    :catch_13
    move-exception v1

    .line 197
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->initForRefresh()V

    .line 198
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->processAliveAppUsage()V

    .line 199
    const/4 v1, 0x1

    goto :goto_c

    .line 210
    :cond_1c
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->initForRefresh()V

    .line 211
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->processAppUsage()V

    .line 216
    iget-object v1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mUsageList:Ljava/util/List;

    invoke-interface {v1}, Ljava/util/List;->size()I

    move-result v1

    if-eqz v1, :cond_30

    iget-wide v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    cmpl-double v1, v2, v4

    if-nez v1, :cond_36

    .line 217
    :cond_30
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->initForRefresh()V

    .line 218
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->processAliveAppUsage()V

    .line 223
    :cond_36
    iget-object v1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mUsageList:Ljava/util/List;

    invoke-interface {v1}, Ljava/util/List;->size()I

    move-result v1

    if-eqz v1, :cond_12

    iget-wide v2, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mTotalPower:D

    cmpl-double v1, v2, v4

    if-eqz v1, :cond_12

    .line 227
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mUsageList:Ljava/util/List;

    invoke-static {v0}, Ljava/util/Collections;->sort(Ljava/util/List;)V

    .line 229
    const/16 v0, 0x64

    goto :goto_12
.end method


# virtual methods
.method public addCallBack(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageCallback;)V
    .registers 3

    .prologue
    .line 144
    iget-object v0, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mCallbackList:Ljava/util/List;

    invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    .line 145
    invoke-direct {p0}, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->asyncRefreshStats()V

    .line 146
    return-void
.end method

.method public setRunningTask(Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$RunningTask;)V
    .registers 2

    .prologue
    .line 151
    iput-object p1, p0, Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService;->mRunningTask:Lcom/ijinshan/kbatterydoctor/powermanager/PowerUsageRankService$RunningTask;

    .line 152
    return-void
.end method