基准电池 android

benchmarking battery android

我正在制作一个人脸识别应用程序,我想在其中做一些基准测试。在测量电池方面需要一些帮助。我正在尝试这样的事情:

    public float calcBattery(float init){
        float batteryValue;
        int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
        int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
        batteryValue = (init - (level / (float)10000));
        if (batteryValue<0) batteryValue*=-1;
        return batteryValue;
    }

但是由于我的应用程序运行时间为 2 到 17 秒,具体取决于面数,击球手水平似乎始终没有变化。我想知道是否有一种正确的方法可以在没有第三方的情况下对 android 进行电池基准测试。

提前致谢

编辑:

我想要一些比电池电量更精确的电池测量方法,例如 mA。我不知道如何以 mA 为单位进行测量,但我知道这是可能的,因为有一些应用程序可以这样做。

要进行任何具有真正意义的基准测试,您需要 运行 您的应用程序比这长得多。您应该能够包含一个循环,该循环将继续 运行ning 直到超过给定的百分比,或者您可以制作一个中断循环按钮。我的建议是将目标从 90% 提高到 10% 左右。关于电池寿命指标的一件事是它们是非线性的——Is Battery Life Linear?。此外,您应该确保禁用尽可能多的其他应用程序和后台进程(非系统关键进程),以消除其他应用程序耗尽电池电量的可能性。

跟踪电池电量从 90% 耗尽到 10% 需要多长时间。如果将时间除以 80,则得到应用使用 1 个百分点的电池寿命平均需要多长时间。

让我们使用一些虚构的数字来使数学更具体。说 1 小时后击球手从 90% 到 10%。一个小时是 3600 秒。 3600 / 80 = 45。因此平均每 45 秒您的应用使用 1% 的电池寿命。

请记住,设备种类繁多,因此最好在质量各异的几个不同设备上重复此操作。

还有一件事要记住。如果您的应用程序足够密集以开始加热 phone 而不仅仅是在离开 运行ning 时加热(我认为面部识别可能会发生这种情况),那么电池将开始更快地耗尽变热。如果是这种情况,您可能应该尝试进行大量较短的试验(一次可能为 5%)。这并不理想,因为它增加了更多出错的机会,但可能是必要的。在这种情况下,您将除以 5 而不是 80,然后对您的试验进行平均。