I've learned from my phone's behavior that you can't rely on the phone's battery information. The 1650 mAh battery of my ZTE Obsidian Z820 phone appears to drain very fast, but its level "magically" jumps when I power the phone off and on. For example, I saw the phone show the battery was down to 10%, but after powering it off and on it immediately showed the battery at 100%. I also saw a jump from 25% to 75%, which shows the size of the jump isn't consistent or predictable. There was an incident when the phone showed the battery was down to 1%, but after power off/on it was able to play videos for a couple of hours more, proving the battery still had a lot of power remaining when the phone said 1%.
The battery voltage (which can be displayed by many apps, for example Battery Log) appears to be an unreliable measurement too. With no major power consumers active except for the phone's screen, I've seen the voltage change by 200 mV or more over the course of a few minutes, which seems very large since 200 mV corresponds to approximately 40% of battery capacity according to the "Voltage versus State-of-Charge" chart at batteryuniversity.com. I've seen the voltage climb a lot even though the phone wasn't connected to a charger. I've seen the voltage climb a lot while the level % fell a lot.
So I'm interested in a finding a more reliable measurement or calculation of the battery's remaining charge and/or its voltage. In addition to being able to determine whether it REALLY is time to replace the battery, I could use the reliable measurements to help me minimize damage to the battery by avoiding deep discharge and overcharge. (In other words, I would keep the battery level within a range of about 30% to 80%, or keep the voltage within a range of about 3.55V to 3.85V. I already run a custom E-Robot script that periodically makes a sound when the voltage is outside that range, which prompts me to connect or disconnect the charger, but the script is relying on the voltage measurement that appears unreliable. [Note: I'm running a brand new version of E-Robot that its developer sent me today as an .apk file, which isn't yet available at Google Play Store. A few days ago I emailed the developer asking him to add the voltage measurement to E-Robot, and he did. My previous E-Robot script made the sound when the percentage was below 35% or above 80%, but since % was too wildly unreliable, I asked the developer to add the voltage measurement.])
I'm also wondering whether there's a way to get my phone's unreliable stats to become more accurate. I tried the so-called "calibration" procedure that involves discharging until the phone turns itself off, followed by a charge to 100%, followed by a repeat of the deep discharge and full charge, but that didn't seem to have any effect on the weird battery behaviors. (I did notice that during the charging the phone quickly reaches 100% even though the voltage is less than 4V, and the voltage continues to climb gradually to over 4.3V if the phone remains connected to the charger. The voltage might have have climbed even higher but I disconnected the charger to avoid high voltage, which damages lithium batteries--as does low voltage.)