【发布时间】:2011-10-28 01:55:38
【问题描述】:
我想知道我的应用程序是否在连接外部电源线的情况下运行。是否可以在运行时找出这种状态?
一个额外的问题:这是否能够区分真正的 USB 电源和那些外部“电池组”?
谢谢!
【问题讨论】:
标签: iphone ios power-management
我想知道我的应用程序是否在连接外部电源线的情况下运行。是否可以在运行时找出这种状态?
一个额外的问题:这是否能够区分真正的 USB 电源和那些外部“电池组”?
谢谢!
【问题讨论】:
标签: iphone ios power-management
使用UIDevice属性batteryState:
[[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateCharging
typedef enum {
UIDeviceBatteryStateUnknown,
UIDeviceBatteryStateUnplugged,
UIDeviceBatteryStateCharging,
UIDeviceBatteryStateFull,
} UIDeviceBatteryState;
至于你的第二个问题。我不相信您可以确定电池组和壁式充电器之间的任何区别,因为上述UIDeviceBatteryState 标志是设备电池可以报告的唯一“状态”。因此,电池组和壁式充电器都将显示为 UIDeviceBatteryStateCharging 或 UIDeviceBatteryStateFull(如果电池组已插入但电量不足,则显示为 UIDeviceBatteryStateUnplugged)。
【讨论】:
您可以检测电池是否正在充电,但这与现有 API 所能达到的一样接近 - 可以说,无法检测电源“来自”何处。
UIDeviceBatteryState batteryState = [UIDevice currentDevice].batteryState;
if (batteryState == UIDeviceBatteryStateCharging) {
// Your code here
}
【讨论】:
我必须包含该行,
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
否则 batteryState 只返回 UIDeviceBatteryStateUnknown。也许这变得有必要,因为最初提出并回答了这个问题。我在这里找到了提示:Determine accurate iPhone battery level。
【讨论】: