如何获得正确的电池电量和电池状态-ios?
Posted
技术标签:
【中文标题】如何获得正确的电池电量和电池状态-ios?【英文标题】:How to get correct battery level and battery status-ios? 【发布时间】:2015-05-21 12:10:15 【问题描述】:总是 [myDevice batteryLevel]
返回 -1 和 [myDevice batterystate]
returning 0(进入默认情况)。
我怎样才能得到正确的值?谁能帮我解决这个问题?下面是我的代码。(总是将batteryLeft打印为“-100%”,将电池状态打印为“Unknown”)。
代码:
UIDevice *myDevice = [UIDevice currentDevice];
[myDevice setBatteryMonitoringEnabled:YES];
float batLeft = [myDevice batteryLevel]*100;
int status=[myDevice batteryState];
NSLog(@"level:%0.0f",batLeft);
NSString *status_str;
switch (status)
case UIDeviceBatteryStateUnplugged:
NSLog(@"UnpluggedKey");
status_str=@"UnPlugged";
break;
case UIDeviceBatteryStateCharging:
NSLog(@"ChargingKey");
status_str=@"Charging";
break;
case UIDeviceBatteryStateFull:
NSLog(@"FullKey");
status_str=@"BatteryFul";
break;
default:
NSLog(@"UnknownKey");
status_str=@"Unknown";
break;
NSLog(@"Battery status:%@",status_str);
【问题讨论】:
你是在设备还是模拟器上测试?在模拟器上进行测试会给你现在得到的输出。 :-) 【参考方案1】:您的代码看起来没问题,与我在我的一个应用中使用的代码相同:
-(void) battery
UIDevice *myDevice = [UIDevice currentDevice];
[myDevice setBatteryMonitoringEnabled:YES];
int state = [myDevice batteryState];
NSLog(@"battery status: %d",state); // 0 unknown, 1 unplegged, 2 charging, 3 full
double batLeft = (float)[myDevice batteryLevel] * 100;
NSLog(@"battery left: %ld", batLeft);
您的问题可能是您在模拟器中尝试此操作,但无法正常工作。
在一台真实设备上试用。
【讨论】:
这段代码与问题中已有的代码有何不同?请说明这是如何解决问题的。【参考方案2】:我希望你没有在你的模拟器上检查它:)
您不会获得设备的确切电池电量,它始终是 0.05 的倍数。这意味着如果您的设备电池电量为 78%,那么它将显示 75%。
如果您想要准确的电池电量指示,那么您可以点击此链接:http://blog.coriolis.ch/2009/02/14/reading-the-battery-level-programmatically/
【讨论】:
以上是关于如何获得正确的电池电量和电池状态-ios?的主要内容,如果未能解决你的问题,请参考以下文章