本文介绍电池监视。

 

像接近监测一样,通过设定UIDevice单例的属性为YES启用电池监视。

1
2
UIDevice *device = [UIDevice currentDevice];
device.batteryMonitoringEnabled = YES;

 

iPhone OS提供了两种电池监测事件,一种是在state(状态)改变时发生 (例如,充电,拔出,充电完成) ,另一种是当电池充电电位改变时更新。像接近监测一样,你想要注册接收notification(通知)的回调:

1
2
3
4
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:)  
    name:@"UIDeviceBatteryLevelDidChangeNotification" object:device];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:)
    name:@"UIDeviceBatteryStateDidChangeNotification" object:device];

 

电池电位通知每隔5%被触发一次。

 

为了测试,我创建了一个一次性的程序(源码: github, zip),它在通知发生时将电池状态及充电电位写入一个Table View和控制台。

 

我拔出电话电源,运行此程序等待电池电位改变通知。iPhone仅在电池电量为95%,然后是90%等时触发通知。

 

当我插入电源重新进行充电时,电池电位变化通知也是以5%为间隔进行触发的。

 

原文见:New In iPhone 3.0 Tutorial Series, Part 5: Battery Monitoring 作者:Dan Grigsby