2009-09-24 75 views
2

想知道是否有超出Apple科技统计数据的计算电池寿命的参考。我尝试过比较一些现有的电池应用程序(电池剩余电量*苹果电脑的数据),有时我不会提出相同的答案。也有使用2G的细胞(而不是3G)的统计数据,我没有看到任何苹果的2G电池续航时间。计算iOS中的电池寿命

当然,一些应用声称他们是'最准确的'......但我没有看到发生这种情况,除非有人有非常准确的统计资料来源。

+0

这不是一个真正的开发问题,整体电池寿命受制于一个令人难以置信的大范围变量。你得到的唯一真正的措施是在执行代表性工作负载时将其运行。 – Benno 2009-09-24 03:06:10

+0

如果问题是如何以编程方式计算它,那肯定是一个发展问题。但是你的确有一个关于计算耗尽率的观点......更确切地说,OP应该询问(比如说)有多少mAh可用。速率可以通过在一段时间内对该值进行采样来计算。 – 2009-09-24 03:30:53

+0

嗯,是的,我在这里,因为我有兴趣建立自己的电池寿命应用程序。所以想要问社区有关计算。 – kindaran 2009-09-24 03:35:18

回答

17

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%增量更新。

+0

我欣赏帖子。我知道SDK代码。我对信息更感兴趣,比如这些电池续航应用从何处获得2G手机通话时间(Apple提供3G通话时间,但我没有看到2G)。很明显,我可以对应用程序使用的公式进行逆向工程,但希望有更好的方法。 – kindaran 2009-09-24 11:48:07

相关问题