我想在iOS中显示设备的电池状态。
我正在编写以下代码以显示电池状态。
UIDevice *myDevice = [UIDevice currentDevice];
[myDevice setBatteryMonitoringEnabled:YES];
double batLeft = (float)[myDevice batteryLevel] * 100;
NSLog(@"%.f",batLeft);
NSString * levelLabel = [NSString stringWithFormat:@"%.f%%", batLeft];
lblLabel.text =levelLabel;
应用程序运行时显示电池状态正常。但是,当应用程序处于后台时,它没有采用更新的值。我希望每次都显示设备的电池状态。我还想在电池耗电2到3%时发出通知。
答案 0 :(得分:2)
为了实现您想要的应用程序,您需要获得运行后台的权限。应用程序在后台运行的唯一条款是需要播放背景音频的应用程序,如音乐播放器或VOIP客户端。如果这只是一个测试应用程序,并且您不打算通过应用程序商店发布它,则可以使用AVAudioSession获取后台权限并轮询电池状态。如果您打算发布应用程序,则应用程序获取后台权限的方案必须使用户受益。即它必须播放音乐或处理电话。
答案 1 :(得分:1)
以下是每秒检查一次电池的示例。您需要检查电池状态何时更改,但我认为您当前的代码只在viewDidLoad中读取一次。
- (void)viewDidLoad {
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(checkBattery) userInfo:nil repeats:YES];
}
- (void)checkBattery {
[myDevice setBatteryMonitoringEnabled:YES];
double batLeft = (float)[myDevice batteryLevel] * 100;
NSLog(@"%.f",batLeft);
NSString * levelLabel = [NSString stringWithFormat:@"%.f%%", batLeft];
lblLabel.text =levelLabel;
}