Calculating remaining time of battery live

2020-02-12 09:00发布

问题:

Is it possible to calculate remaining battery time in hours and minutes? Also, would it be able to calculate this time depending on if I'm using a certain app? Is it even possible to get such information? If you could please give me advice on how to do that, I'd be very thankful.

回答1:

Estimating the remaining battery life is based on analytics. As the other people said you have to listen for battery level changes and in addition you have to keep track of them. After some time you will have enough data to calculate what is the average time the battery lasts. In addition you know when the battery drains fast and when drains slow so you can improve your estimation based on this. Also you will know in what time the user charges the devices. There are a lot of events that can be tracked and using the battery level. In addition you can also track when the screen is on or off. The algorithm of calculating the remaining battery life depends on you :)

I hope this explains (at least a bit) the idea of the estimation the battery life.



回答2:

I don't know the code, but I can help you the logic/formula for this question:

  1. Collect all information from the battery statistics, and count the usage in total. Then calculate the usage per second, how much the battery was drained per second.
  2. Get the battery capacity in mAh, and calculate the remaining live with this formula: total capacity per speed of the usage.

Oddly enough, for some battery app developers know the code, such as DU Battery Saver.



回答3:

You can use BatteryManager library to checkout the battery status with EXTRA_LEVEL:

int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);

Unfortunately, you can get the remaining time only with approximation because some apps may consume more power.

Cheers