我想要一个通过以受控方式使用 CPU 资源来耗尽电池电量的应用程序。她,通过受控方式,我的意思是,假设“X 单位/毫秒”是电池消耗率的最大量,而“Y 单位/毫秒”是电池消耗率的最小量。
现在,我想将一个 1 到 100 的整数作为程序的输入,我的应用程序会生成与其值对应的电池消耗。假设只有这个应用程序在系统上运行。
那么,有没有办法做到这一点?
我想要一个通过以受控方式使用 CPU 资源来耗尽电池电量的应用程序。她,通过受控方式,我的意思是,假设“X 单位/毫秒”是电池消耗率的最大量,而“Y 单位/毫秒”是电池消耗率的最小量。
现在,我想将一个 1 到 100 的整数作为程序的输入,我的应用程序会生成与其值对应的电池消耗。假设只有这个应用程序在系统上运行。
那么,有没有办法做到这一点?
由于硬件和配置的差异,这样的应用程序可能需要自行校准。也就是说,它应该在监控电池的同时运行耗电任务,以估计这些耗电任务需要多少电量。
所以,需要做两件事:
电池监控
Android 提供了一个获取电池信息的 Intent。有一个 SDK 教程1。不幸的是,结果的粒度是有限的,可能是每个百分点。这意味着您需要更长时间的校准测试,并且您的结果(以及因此流失)的准确性将受到限制。
耗电任务
CPU 通常不是移动设备中最大的电力消耗者。LCD 是否打开可能比占用所有 CPU 内核更能影响消耗。无线电硬件(3G/GPS/WIFI)也可以产生比 CPU 更高的消耗。处于最大亮度的 LCD 会比处于最小亮度的 LCD 消耗更多的电量。AMOLED 会比 LCD 消耗更少的电量。
根据所使用的硬件,不同任务的性能会有很大差异。这就是需要校准的原因。