如何在iOS上以1%的粒度获得实时电池电量

cat*_*cat 15 iphone cocoa-touch

我正在使用此功能获取设备的当前电池电量:

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
UIDevice *myDevice = [UIDevice currentDevice];

[myDevice setBatteryMonitoringEnabled:YES];
double batLeft = (float)[myDevice batteryLevel]; 
NSLog(@"%f",batLeft);
Run Code Online (Sandbox Code Playgroud)

但结果的粒度为5%.示例:当手机电池电量为88%时,它仅记录0.85的值.batteryLevel仅以0.05为增量返回值.例如:0.85,0.9,0.95并且永远不会返回0.82或0.83之类的值.

是否有任何解决方案可以获得更高精度的百分比?

nst*_*nst 32

至少有四种不同的方式来读取电池电量,并且所有四种方式都可以返回不同的值.

以下是这些值随时间变化的图表.

这个iOS项目记录了这些值:https://github.com/nst/BatteryChart

请查看代码以供参考.

iPhone 5电池


bit*_*com 10

看看这个网站: 以编程方式读取电池电量

但是,小心使用.这里使用的所有API都没有在iPhone上记录,如果您将此应用程序提交到App Store,可能会导致拒绝.虽然电池充电状态不完全,但我建议使用UIDevice电池监控方法.