12

如何以 1% 的准确度获得电池电量。

       [UIDevice currentDevice].batteryLevel

将给出准确度为 5% 的电池电量。但我最近在运行 ios 5.1 的 iphone 4S 上使用了 Battery Doctor 应用程序,它以 1% 的准确度提供电池电量。任何人都有任何想法,我们如何才能获得这种准确性......我已经尝试并搜索了很多,但没有得到他们如何计算它..提前谢谢......

4

5 回答 5

9

从 iOS 8 开始,

[UIDevice currentDevice].batteryLevel

提供 1% 的准确率 :)

于 2014-12-11T19:50:40.143 回答
7

如果您关闭设置->常规->使用->电池百分比,电池医生会以 %5 的精度显示您的电池电量...所以我猜他们正在为设备的右上角运行一些图像识别算法,其中显示电池百分比。

于 2012-12-11T13:53:28.063 回答
4

如果你越狱了,你可以简单地使用

int percent = [(SBUIController*)[objc_getClass("SBUIController") sharedInstance] displayBatteryCapacityAsPercentage];

此方法存在于 iOS 4.3+ 上,并且可能是 Battery Doctor 正在使用的方法。

于 2013-06-25T21:21:25.530 回答
1

答案来自这个问题

您可以使用 anNSTimer来操纵您显示的值,从而使外观看起来准确。对于应用程序处于活动状态的每个会话,制作一组电池数据样本(例如电池电量从 100% 下降到 95%,然后从 95% 下降到 90% 所需的时间,等等)并将其保存在设备本身上. 然后,使用计时器根据电池电量下降 5% 除以 5 所需的时间设置更新(和估计)的电池值(假设每个百分比在相同的时间间隔后下降,这有所不同,但不会是一个明显的偏差)。确实,电池寿命会随着时间的推移而下降,但由于我们根据上次会话中保存的值调整计时器值,它应该在设备的整个生命周期内继续保持非常准确。

编辑 -对于初始状态,您可以根据 iPhone 型号(3、3G、4、4S)提供默认值。可以为这些不同的设备计算不同的值。

于 2012-09-10T07:48:20.883 回答
1

在 iOS 8.1.x 中,我注意到电池电量现在正在报告应用程序的确切电池电量。以前,UIDevice每 5% 报告一次。在 iOS 8.1.x 中您无需再做任何事情,因为[UIDevice currentDevice].batteryLevel现在应该自动报告这一点。

于 2015-01-17T04:06:18.440 回答