Cocoa:如何通过obj-c识别它是台式机还是笔记本电脑?

时间:2015-12-11 10:00:42

标签: objective-c cocoa

我使用下面给出的代码在我的应用程序中显示电池剩余时间:

-(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:如果发现了类似的问题,但他们提供的解决方案是获取系统的型号。如果我使用这种方法,那么我将需要不断更新模型编号,以便我的代码不会破坏是不切实际的。

请建议我该怎么办...

非常感谢你的关注。

1 个答案:

答案 0 :(得分:2)

我认为您应该使用IOPSGetTimeRemainingEstimate函数,如果附加到无限制的电源,则返回kIOPSTimeRemainingUnlimited。别忘了,mac book也可能连接到AC电源。