如何以 1% 的准确度获得电池电量。
[UIDevice currentDevice].batteryLevel
将给出准确度为 5% 的电池电量。但我最近在运行 ios 5.1 的 iphone 4S 上使用了 Battery Doctor 应用程序,它以 1% 的准确度提供电池电量。任何人都有任何想法,我们如何才能获得这种准确性......我已经尝试并搜索了很多,但没有得到他们如何计算它..提前谢谢......
从 iOS 8 开始,
[UIDevice currentDevice].batteryLevel
提供 1% 的准确率 :)
如果您关闭设置->常规->使用->电池百分比,电池医生会以 %5 的精度显示您的电池电量...所以我猜他们正在为设备的右上角运行一些图像识别算法,其中显示电池百分比。
如果你越狱了,你可以简单地使用
int percent = [(SBUIController*)[objc_getClass("SBUIController") sharedInstance] displayBatteryCapacityAsPercentage];
此方法存在于 iOS 4.3+ 上,并且可能是 Battery Doctor 正在使用的方法。
答案来自这个问题:
您可以使用 anNSTimer
来操纵您显示的值,从而使外观看起来准确。对于应用程序处于活动状态的每个会话,制作一组电池数据样本(例如电池电量从 100% 下降到 95%,然后从 95% 下降到 90% 所需的时间,等等)并将其保存在设备本身上. 然后,使用计时器根据电池电量下降 5% 除以 5 所需的时间设置更新(和估计)的电池值(假设每个百分比在相同的时间间隔后下降,这会有所不同,但不会是一个明显的偏差)。确实,电池寿命会随着时间的推移而下降,但由于我们根据上次会话中保存的值调整计时器值,它应该在设备的整个生命周期内继续保持非常准确。
编辑 -对于初始状态,您可以根据 iPhone 型号(3、3G、4、4S)提供默认值。可以为这些不同的设备计算不同的值。
在 iOS 8.1.x 中,我注意到电池电量现在正在报告应用程序的确切电池电量。以前,UIDevice
每 5% 报告一次。在 iOS 8.1.x 中您无需再做任何事情,因为[UIDevice currentDevice].batteryLevel
现在应该自动报告这一点。