android系统应用程序电量消耗计算方法

1.反射出类com.android.internal.os.PowerProfile得到类对象PowerProfile

2.使用PowerProfile的getAveragePower分别得到wifi单位耗电值wifiCost,数据流量单位耗电值radioCost,gps单位耗电值gpsCost

3.在android 4.1以上系统解析系统文件/proc/net/xt_qtaguid/iface_stat_all分别得到数据流量值radioBytes和wifi流量值wifiBytes

      使用公式radioPower = radioBytes*radioCost得到数据流量耗电量radioPower

4.在android 4.1以下系统上解析系统文件/proc/net/xt_qtaguid/stats分别得到数据流量值radioBytes和wifi流量值wifiBytes

使用公式wifiPower = wifiBytes*wifiCost得到wifi耗电量wifiPower

5.

     1).使用PowerProfile的getNumCpuClusters得到cpu的簇数cpuClusterNum

      2).获取到当前进程的pid,解析proc/pid/stat得到当前进程的cpu的utime,stime.cutime,cstime

      3).使用公式cpuTime = utime + stime + cutime +cstime得到总的cpu使用时长cpuTime

      4).遍历每个cpu簇,使用PowerProfile的getNumSpeedStepsInCpuCluster得到每个簇的步频数,并累加得到总的cpu步频数totalCpuSteps

      5).假定每个步频下的运行时长是一样的,则使用公式

            averageStepTime = cpuTime/totalCpuSteps

          得到每个步频下的cpu耗电值averageStepTime

  6)遍历所有步频,

       1).使用PowerProfile的getAveragePowerForCpu得到某个cpu簇下某个步频的cpu单位耗

电值cpuClusterStepCost

       2).使用公式

cpuClusterStepPower = cpuClusterStepCost*averageStepTime

  得到当前簇当前步频的cpu耗电量cpuClusterStepPower

       3).累加所有cpuClusterStepPower得到总的cpu耗电量totalCpuPower

  6.

      1).使用aop面向切面编程分别切入以android系统api requestLocationUpdates 和removeUpdates,在程序运行时,分别得到requestLocationUpdates的调用时间点time1,和removeUpdates的调用时间点time2,

       2).使用公式:gpsTime = time2 – time1, 得到gps使用时长gpsTime

      3).使用公式:gpsPower = gpsCost * gpsTime

  7.使用公式:

      totalPower = radioPower + wifiPower + totalCpuPower,得到当前应用总的耗电量totalPower

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值