我使用下面给出的代码在我的应用程序中显示电池剩余时间:
-(int)getLeftTimeMinutes{
CFMutableDictionaryRef matching , properties = NULL;
io_registry_entry_t entry = 0;
matching = IOServiceMatching( "IOPMPowerSource" );
entry = IOServiceGetMatchingService( kIOMasterPortDefault , matching );
IORegistryEntryCreateCFProperties( entry , &properties , NULL , 0 );
NSDictionary* arr = CFBridgingRelease(properties);
NSNumber *AvgTimeToEmpty = [arr objectForKey:@"TimeRemaining"];
if (AvgTimeToEmpty == nil) {
return 0;
}
return [AvgTimeToEmpty integerValue];
}
问题
如果用户正在使用桌面,那么我需要显示一条消息,表明您直接连接到交流电源。
如何找出用户有桌面?
我的研究
StackOver Flow:如果发现了类似的问题,但他们提供的解决方案是获取系统的型号。如果我使用这种方法,那么我将需要不断更新模型编号,以便我的代码不会破坏是不切实际的。
请建议我该怎么办...
非常感谢你的关注。
答案 0 :(得分:2)
我认为您应该使用IOPSGetTimeRemainingEstimate函数,如果附加到无限制的电源,则返回kIOPSTimeRemainingUnlimited
。别忘了,mac book也可能连接到AC电源。