15

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

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

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

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

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

4

7 回答 7

32

至少有四种不同的方式来读取电池电量,所有四种方式都可能返回不同的值。

这是这些值随时间变化的图表。

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

请查看代码以供参考。

iPhone 5 电池

于 2013-05-22T15:04:39.357 回答
10

查看此站点: 以编程方式读取电池电量

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

于 2012-08-04T09:17:36.800 回答
4
UIDevice *myDevice = [UIDevice currentDevice];    
[myDevice setBatteryMonitoringEnabled:YES];

double batLeft = (float)[myDevice batteryLevel] * 100;
NSLog(@"%.f", batLeft);    

NSString * levelLabel = [NSString stringWithFormat:@"%.f%%", batLeft];    
lblLevel.text = levelLabel;
于 2012-08-22T12:55:23.753 回答
2

获取电池电量的Swift版本:

UIDevice.current.isBatteryMonitoringEnabled = true
let batteryLevel = UIDevice.current.batteryLevel 

batteryLevel返回 0,39;对我来说是 0,40 个值。

于 2019-02-21T14:28:23.777 回答
1

上面的答案非常好,但它们都在 Obj-C 中,我已经将这些与其他示例一起用于在 上执行相同的任务MonoTouch,所以我将我的代码放在这里以防万一有人需要它:

try
{
    UIDevice.CurrentDevice.BatteryMonitoringEnabled = true;
    _Battery.Level = (int)(UIDevice.CurrentDevice.BatteryLevel * IOSBatteryLevelScalingFactor);
    _Battery.State = UIDevice.CurrentDevice.BatteryState;
}
catch (Exception e)
{
    ExceptionHandler.HandleException(e, "BatteryState.Update");
    throw new BatteryUpdateException();
}
finally
{
    UIDevice.CurrentDevice.BatteryMonitoringEnabled = false;
}

我的博客上也有一篇完整的帖子,在这里提供所有详细信息

于 2014-01-20T05:51:28.583 回答
1

你可以在这里找到完美的答案

Xcode:11.4 斯威夫特:5.2

点击这里

于 2020-04-21T04:46:22.543 回答
0

如果您使用的是 swift 5.1 或更高版本,此代码肯定适合您。

第 1 步:- 要开始,首先启用当前设备的 isBatteryMonitoringEnabled 属性,如下所示:-

UIDevice.current.isBatteryMonitoringEnabled = true

第 2 步:- 您现在可以读取当前电池电量

let level = UIDevice.current.batteryLevel
print(level)
于 2020-03-05T06:40:56.593 回答