[英]Current Battery State always returning “Charging” in ios
即使我的iPhone电池已100%充电,但我UIDeviceBatteryStateCharging
获取电池状态。
它应该给我状态为UIDeviceBatteryStateFull
。
我的代码如下。
[[UIDevice currentDevice]setBatteryMonitoringEnabled:YES];
int i=[[UIDevice currentDevice] batteryState];
switch (i)
{
case UIDeviceBatteryStateUnplugged:
{
NSLog(@"UnpluggedKey");
break;
}
case UIDeviceBatteryStateFull:
{
NSLog(@"FullKey");
break;
}
case UIDeviceBatteryStateCharging:
{
NSLog(@"ChargingKey");
break;
}
default:
{
NSLog(@"UnknownKey");
break;
}
}
NSLog(@"Battery Status is :%d",i);
尝试一下可能会有所帮助.....
- (void)viewDidLoad
{
// Enable monitoring of battery status
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
// Print current status
[self batteryStatus];
// Request to be notified when battery charge or state changes
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryLevelDidChangeNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryStateDidChangeNotification object:nil];
}
- (void)batteryStatus
{
NSArray *batteryStatus = [NSArray arrayWithObjects:
@"Battery status is unknown.",
@"Battery is in use (discharging).",
@"Battery is charging.",
@"Battery is fully charged.", nil];
if ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateUnknown)
{
NSLog(@"%@", [batteryStatus objectAtIndex:0]);
}
else
{
NSString *msg = [NSString stringWithFormat:
@"Battery charge level: %0.2f%%\n%@", [[UIDevice currentDevice] batteryLevel] * 100,
[batteryStatus objectAtIndex:[[UIDevice currentDevice] batteryState]] ];
NSLog(@"%@", msg);
}
}
你的答案是...
您正在使用不同的枚举键值进行检查
typedef NS_ENUM(NSInteger, UIDeviceBatteryState) {
UIDeviceBatteryStateUnknown,
UIDeviceBatteryStateUnplugged, // on battery, discharging
UIDeviceBatteryStateCharging, // plugged in, less than 100%
UIDeviceBatteryStateFull, // plugged in, at 100%
}; // available in iPhone 3.0
像这样更改您的代码,它将起作用
[[UIDevice currentDevice]setBatteryMonitoringEnabled:YES];
int i=[[UIDevice currentDevice] batteryState];
switch (i)
{
case UIDeviceBatteryStateUnplugged:
{
NSLog(@"UnpluggedKey");
break;
}
case UIDeviceBatteryStateCharging:
{
NSLog(@"ChargingKey");
break;
}
case UIDeviceBatteryStateFull:
{
NSLog(@"FullKey");
break;
}
default:
{
NSLog(@"UnknownKey");
break;
}
}
NSLog(@"Battery Status is :%d",i);
希望对您有帮助
ADC应用程序的行为相同...永远不会显示FULL。
https://developer.apple.com/reference/uikit/uidevicebatteryleveldidchangenotification
所以拉姆似乎是对的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.