0

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

4

2 回答 2

2

为了实现您想要执行的应用程序,您需要获得运行后台的权限。为应用程序在后台运行所做的唯一规定是需要播放背景音频的应用程序,例如音乐播放器或 VOIP 客户端。如果这只是一个测试应用,并且您不打算通过应用商店发布它,您可以使用 AVAudioSession 获取后台权限并轮询电池状态。如果您打算发布应用程序,您的应用程序获得后台权限的场景必须使用户受益。即它必须播放音乐或处理电话。

于 2013-04-23T07:07:29.833 回答
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;

}
于 2013-04-23T05:12:25.947 回答