在电池电量达到0%Android之前我有多少时间

时间:2013-07-03 11:12:26

标签: android countdowntimer batterylevel

我可以在电池电量达到0%之前得到多少时间?使用CountDownTimer并使电池消耗多少mAh的问题?有人可以帮我做吗?

2 个答案:

答案 0 :(得分:2)

你无法准确猜出电池放电剩余的时间,你可以做一些估计。

您可以通过注册接收器进行操作Intent.ACTION_BATTERY_CHANGED

,在广播接收器的帮助下获得电池续航时间
battery_level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);

修改:

您应该做的是,定期获取battery_level并检查每分钟/每小时消耗多少电池,然后进行一些计算。

因此,如果您的电池电量为80%,每小时降低4%,则估计电池续航时间为20小时

答案 1 :(得分:1)

简短回答:不。

答案很长:是的,你可以..但不是那么容易..因为你不知道设备一次消耗多少能量,你应该首先尝试找出它,然后计算剩余时间使用该数据...

正如您可能已经猜到的那样,一开始可能不那么准确,但sample越多,数据就越准确。 所以在这里总结你需要做的事情:

首先,当用户打开应用时,由于您没有足够的能耗数据,您应该只显示Calculating...之类的内容。在这里你应该决定有一个采样时间。这就像数学中的derivation ..

假设您的采样时间为10秒。 (我猜你的实际值应该更大。)

你应该有一个名为level1的变量。将当前级别保存到它。等待sample time的金额现在为10秒。现在将当前值保存到level2。将level1 - level2产品保存到另一个变量consumed

现在这里是神奇的。您知道在10秒内消耗了多少功率(即consumed变量)。从现在开始,您可以使用该数据计算剩余时间。但请记住它仍然只有10秒钟。如果10秒钟的用户正在玩重型游戏甚至设备都处于待机状态怎么办?这就是为什么它不准确。但直到现在..

您可以做的是将consumed变量添加到名为sample_data的数组中。让过程继续并每10秒对消耗进行一次采样并将其添加到阵列中。您获得的数据越多,计算的准确度就越高。

然后,您可以使用阵列中的平均样本轻松计算剩余时间.Easy Peasy:p