There is no app that does that, and there never will be, because it is impossible. The voltage of a battery does not tell you how much charge a battery has, nor does any other characteristic of the battery. Battery voltage does drop as capacity drops, but the voltage drop is a function of the percentage of charge, not amount of charge.
It is impossible to directly determine the amount of charge in a battery at a given point in time, by voltage or any other means. Battery capacity tests can only be conducted by spending the battery charge, and measuring it as it is used up. The test doesn't tell you how much charge the battery currently had at any given point in time; it tells you at the end how much charge the battery had at the beginning. I suppose a smart aleck might say that at the end of the test you know how much charge the battery has at that point in time, because that charge is zero. However, you're still not determining that by measuring the charge directly; you're measuring the current, and inferring zero charge based on zero current.
It should theoretically be possible to design an app that estimates capacity by conducting a drain test, but I haven’t been able to find such an app. Maybe that’s because it would be a major pain to run the test. The test would need to start with the battery fully charged and run until it is fully drained, and in order for the test to be accurate you would need to leave the device idle for the duration of the test.
The best method I can think of to estimate battery capacity is to compare the drain rate of the stock battery (or any other battery whose specs you trust as a baseline) to the drain rate of the battery you want to measure, under circumstances that are as similar as possible.
I'm not sure exactly how Android measures the battery percentage. I've read in unofficial sources that it's supposedly based on current and/or voltage, but I've also read that due to the nearly flat voltage vs. charge percentage curve, voltage is not sufficient for determining the charge percentage of lithium ion batteries, and other characteristics need to be used, possibly in combination. In any case, I recommend starting the test from the same percentage charge for both batteries and near the middle of the range, due to the fact that some of the characteristics that can be used to estimate charge percentage (such as the voltage) have a non-linear relationship to the charge percentage, and the curve tends to be flattest near the middle.
Step by step:
- Insert the reference battery (whose capacity rating you trust) and power up the device.
- Set the timer for 1 hour, or some amount of time during which you expect that the battery will drain at least 20% but no more than 50%. You it to be enough to produce granular results where rounding errors won’t significantly throw it off, but no so much that you’ve almost depleted the battery and entered the steep part of the voltage curve.
- To reduce the number of variables that can impact the power drain, run the test after a restart, turn off all network connections (airplane mode), and make sure the screen brightness is constant (by disabling automatic adjustment and screen timeout, or making sure the screen is off for the duration of the test. Running a high drain app can help get more significant results more quickly. However, to ensure that you’re reproducing the same drain rate for both batteries, choose an app with a constant rate of power usage (such as an LED flashlight app). Don’t run any other apps or interact with the device for the duration of the test.
- Drain it to 75%. The moment it reaches 75%, start the timer.
- When time runs out, check the battery percentage.
- Power off, and repeat the test using the extended battery, (make sure you use the same charger and same amount of time, of course).
- Divide the change in percentage for the extended battery by the change in percentage for the baseline battery and multiply by the baseline battery’s capacity.
For example, running my Galaxy S4 for one hour, in airplane mode with the LED flashlight, on, the screen brightness at maximum, and the timer app displayed, starting from 75% charge, the stock battery drains to 39%, and my Deep Stretch DPS430 extended battery drains to 52%. The stock battery’s capacity is 2600 mAh. So, to estimate the extended battery’s capacity based on how its drain compares to the stock battery:
(75 - 39) / (75 - 52) * 2600 = 4070
To my surprise, that was actually pretty close to the stated capacity of 4280 mAh (keeping in mind that the test isn’t perfect, and is subject to rounding errors. In this case rounding errors could throw off the results by up to ~110 in either direction, so the actual result really should be stated as “approximately 3960 to 4180 mAh”.)