電能W(焦耳J) = 電功率P(瓦特W) * 時間T(s) = 電壓U(福特V)* 電量Q(庫侖C)java
電功率P(瓦特W) = 電壓U(福特V)* 電流I(安培A),表示電流作功快慢。代入上面的公式,獲得:android
電量Q(庫侖C)= 電流I(安培A)* 時間T (s)spa
cpu = cpuSpeedStepTimes[step]/totalTimeAtSpeeds * (user time + system time) * powerCpuNormal[step]orm
wake lock = wake lock duration * power_profiler.xml 中 type = cpu_awake 的數值xml
data transformation = data bytes * getAverageDataCost()get
wifi running = wifi running duration * power_profiler.xml 中 type = wifi_on的數值io
gps = gps sensor * power_profiler.xml中的type=gps_on的數值編譯
other sensors = sensor duration * sensor defaultform
所以,電量計算公式爲:mobile
電量(mAs) = cpu + wake lock + data transformation + wifi running + gps + other sensors
關於 power_profiler.xml
路徑:xref: /frameworks/base/core/res/res/xml/power_profile.xml,運行時被編譯到 /system/framework/res/xml下
解析代碼:xref: /frameworks/base/core/java/com/android/internal/os/PowerProfile.java