如何准确获得iPhone的电池电量?

我想获得电池电量,准确到1%。 我GOOGLE了,find这个,

CFTypeRef blob = IOPSCopyPowerSourcesInfo(); CFArrayRef sources = IOPSCopyPowerSourcesList(blob); CFDictionaryRef pSource = NULL; const void *psValue; int numOfSources = CFArrayGetCount(sources); if (numOfSources == 0) { NSLog(@"Error in CFArrayGetCount"); return -1.0f; } for (int i = 0 ; i < numOfSources ; i++) { pSource = IOPSGetPowerSourceDescription(blob, CFArrayGetValueAtIndex(sources, i)); if (!pSource) { NSLog(@"Error in IOPSGetPowerSourceDescription"); return -1.0f; } psValue = (CFStringRef)CFDictionaryGetValue(pSource, CFSTR(kIOPSNameKey)); int curCapacity = 0; int maxCapacity = 0; double percent; psValue = CFDictionaryGetValue(pSource, CFSTR(kIOPSCurrentCapacityKey)); CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &curCapacity); psValue = CFDictionaryGetValue(pSource, CFSTR(kIOPSMaxCapacityKey)); CFNumberGetValue((CFNumberRef)psValue, kCFNumberSInt32Type, &maxCapacity); percent = ((double)curCapacity/(double)maxCapacity * 100.0f); return percent; } return -1.0f; 

但并不准确。 所以我在这里寻求帮助。

来自UIDevice类参考 :

您可以使用UIDevice实例获取有关电池充电状态(由batteryState属性描述)和充电级别(由batteryLevel属性描述)更改的信息和通知。

 [UIDevice currentDevice].batteryMonitoringEnabled = YES; float batteryLevel = [UIDevice currentDevice].batteryLevel; NSLog(@"battery level: %f", batteryLevel * 100);