获取ios中每次更改的电池状态

时间:2013-04-23 04:53:48

标签: ios batterylevel

我想在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%时发出通知。

2 个答案:

答案 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;

}