Always [myDevice batteryLevel]
returning -1 and [myDevice batterystate]
returning 0(entering into Default case).
How can i get the correct values?.Can anyone please help me to solve this?.Below is my code.(Always Printing batteryLeft as "-100%" and Battery Status as "Unknown").
Code:
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);
Your code looks to be ok, it's the same that I used in one of my app:
-(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);
}
Your problem can be that you try this in the simulator, where it can't be work.
Try on one real device.