この API を使用すると、バッテリー レベルの変化に関する通知を受け取るように登録できます。5% の増加または減少での変化のみを報告しますが、タイマーを使用して、2 つの変化 (または最初のバッテリー レベルと最初の変化) の間の時間を測定できます。通知を登録する方法は次のとおりです。
// 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];
最初の通知では、現在の状態 (プラグが抜かれている、充電中、満杯など) が示されます。2 番目は、5% の増分に達するたびにトリガーされます。
与えられた変更通知が 5% の変更の増減だけである場合、精度は非常に適切に、または迅速に計算できるものではないように思えます。デバイスが何もしていない場合、5% の変更には非常に長い時間がかかる可能性があります。
[[UIDevice currentDevice] batteryLevel] をタイマーで監視できるかもしれませんが、私は試していませんが、これと同じ 5% の増分でしか更新されないと思います。