在 iOS 中计算电池寿命
Posted
技术标签:
【中文标题】在 iOS 中计算电池寿命【英文标题】:Calculating battery life in iOS 【发布时间】:2009-09-24 02:53:33 【问题描述】:想知道是否有超出 Apple 技术统计数据的参考资料可用于计算电池寿命。我尝试比较一些现有的电池应用程序(剩余电量百分比 * Apple 的数据),但有时我不会得出相同的答案。还有使用 2G 电池(而不是 3G)的统计数据,我在 Apple 上没有看到任何关于 2G 电池寿命的信息。
当然,有些应用声称它们是“最准确的”……但我认为这种情况不会发生,除非有人有非常准确的统计数据来源。
【问题讨论】:
这不是一个真正的开发问题,整体电池寿命受制于非常大范围的变量。唯一真正的措施是在它执行有代表性的工作负载时将其关闭。 如果问题是如何以编程方式计算它,那肯定是一个开发问题。但是你确实有一点关于计算燃尽率......更准确地说,OP应该询问(比如说)有多少mAh可用。可以通过在一段时间内对该值进行采样来计算速率。 嗯,是的,我来这里是因为我有兴趣为自己构建一个电池寿命应用程序。所以想向社区询问计算。 为什么这么多人一直问这个问题,还是同一个人一遍又一遍地问同一个问题? 我尝试搜索***,以及google。如果你能指出我以前的问题/答案,那就太好了。 【参考方案1】:该 API 允许您注册以接收有关电池电量更改的通知。它仅以 5% 的增量向上或向下报告更改,但您可以使用计时器并测量两次更改(或初始电池电量和第一次更改)之间的时间。以下是您注册通知的方式:
// Use this call to get the current battery level as a float
// [[UIDevice currentDevice] batteryLevel]
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(batteryStateDidChange:)
name:UIDeviceBatteryStateDidChangeNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(batteryLevelDidChange:)
name:UIDeviceBatteryLevelDidChangeNotification
object:nil];
第一个通知告诉您当前状态,例如拔下、充电或充满。每当达到 5% 的增量时,都会触发第二个。
在我看来,如果你得到的只是 5% 的变化通知,那么准确度就不是你可以很好或快速计算出来的东西。如果设备什么都不做,5% 的变化可能需要很长时间。
也许您可以使用计时器监控 [[UIDevice currentDevice] batteryLevel],但是,虽然我没有尝试过,但我认为它只会以相同的 5% 增量更新。
【讨论】:
我很欣赏这篇文章。我知道 SDK 代码。我对这些电池寿命应用程序从哪里获得 2G 通话时间(Apple 提供 3G 通话时间,但我看不到 2G)等信息更感兴趣。显然,我可以对应用程序使用的方程式进行逆向工程,但希望得到更好的结果。以上是关于在 iOS 中计算电池寿命的主要内容,如果未能解决你的问题,请参考以下文章
是否有官方参考说明电池寿命是垃圾收集器未包含在 iOS 中的原因之一?