背景

最近比较喜欢玩手机上的吃鸡游戏,不过玩着玩着手机经常性的发热,耗电也快的飞起。但是如何描述耗电的水平是个比较头疼的问题。

目前测试耗电的方案也比较多.

因为我实在不舍得拆我的手机,所以只能去研究软件方案了。但是我又不需要知道具体的耗电原因,battery-historian 这款重量级的软件就先不用了。
考虑到我只是想之前当前玩的游戏的能耗等级,就像冰箱上经常贴的能耗等级一样。方案还是简单一点好。

设计测试方案

冰箱是按照每天的耗电量,手机 App 能耗等级的话,就按照平均电流(单位 mA)来计算好了。

测试方法

准备

开始

计算

app 运行时平均电流减去未安装时电流乘以电压 便是耗电功率。根据运行时电流以及电池容量可以推算出可运行时长。

电流该如何计算?

目前有两种方法

  1. 通过读取系统中的文件

    根据 stackoverflow 的结果,不同手机获取电流值的位置是不同的
    https://stackoverflow.com/questions/2439619/getting-the-battery-current-values-for-the-android-phone

    /sys/class/power_supply/battery/current_now # nexus one
    /sys/class/power_supply/battery/batt_current # htc
    /sys/class/power_supply/battery/charger_current # sony ericsson x10
    /sys/class/power_supply/battery/smem_text # droid eris
    # other ...
    

    实际测试中,发现在部分手机有 10s 以上的延迟,有的延迟还是动态的,实在是不怎么准。直接来看第二种方案。

  2. 通过电池电量百分比的下降速度结合电池的总容量计算出来(好是好,就是费时间)

    首先需要知道电池总的电量 S。可以通过百度,谷歌手机的品牌可以查到。
    部分手机可以通过cat /sys/class/power_supply/battery/charge_full获取到

    dumpsys battery可以获取到当前电量的百分比。
    电量从 x% 到 y% 的时候消耗的时间 T。

    那么,这个时间的平均电流 I 为 S * (x-y)% / T。

下面用这种方法测试终结者 2,手机(坚果 Pro)
用 echarts 简单的做了一个图

如图所示,电量从 96% 下降到了 89%,下降了 7% 所用时间 24 分钟。该电池总容量 3496mAh

所以游戏平均电流为 3496*7%/(24/60) = 611mA。
持续打游戏应该可以玩的时间 3496/611 = 5.7h。能玩一下午哎。
游戏的画质默认的是均衡。

再来测试一次。
86% -> 80% 25 分钟 3496*7%/(25/60) = 587mA。误差范围大约 30mA。尚可接受。

第三次改成极高画质
76%-70% 18 分钟 3496*6%/(18/60) = 699mA。比较符合预期,电流升高了。

考虑到时间问题,晚饭还没吃,就只测试一个游戏了。其中一把不小心吃了个鸡,嘿嘿。


↙↙↙阅读原文可查看相关链接,并与作者交流