获取显示亮度

lsw*_*ank 1 macos cocoa osx-mavericks

现在有没有办法在 OS X 10.9+ 中获得显示亮度CGDisplayIOServicePort已被弃用?

lsw*_*ank 5

经过一番搜索和摆弄之后,这里有一种“面向未来”的方法来获得不使用 OS X 10.9 中弃用的 CGDisplayIOServicePort 的显示器亮度。

- (float)getDisplayBrightness
{
    float brightness = 1.0f;
    io_iterator_t iterator;
    kern_return_t result = 
        IOServiceGetMatchingServices(kIOMasterPortDefault,
            IOServiceMatching("IODisplayConnect"),
            &iterator);

    // If we were successful
    if (result == kIOReturnSuccess)
    {
        io_object_t service;

        while ((service = IOIteratorNext(iterator)))
        {
            IODisplayGetFloatParameter(service, 
                kNilOptions, 
                CFSTR(kIODisplayBrightnessKey), 
                &brightness);

            // Let the object go
            IOObjectRelease(service);
        }
    }

    return brightness;
}
Run Code Online (Sandbox Code Playgroud)