CoreMediaIO,错误更新属性kCMIODevicePropertyDeviceIsRunningSomewhere

时间:2017-03-08 20:17:20

标签: objective-c macos cocoa avfoundation isight

当某些进程开始使用相机时,我需要收到一个事件。我是通过CMIOObjectGetPropertyData完成的。 但它无法正常工作,正确的值只是第一次被访问。

我也试过使用CMIOObjectAddPropertyListenerBlock,但是他没有使用它。请告诉我,我做错了什么?我将非常感激。

while (1)
{
    UInt32 value = 0;
    UInt32 valuePropertySize = sizeof(flag);
    CMIOObjectPropertyAddress opa = {kCMIODevicePropertyDeviceIsRunningSomewhere,
        kAudioObjectPropertyScopeWildcard, kAudioObjectPropertyElementMaster};

    OSStatus result = CMIOObjectGetPropertyData(device, &opa, 0, NULL, sizeof(UInt32), &valuePropertySize, &value);
    NSLog(@"%d : %d", result, value);
    sleep(1);
}

1 个答案:

答案 0 :(得分:0)

我也有同样的问题。使用<ul> <li>Title</li> <li>Length</li> <li>Release Date</li> </ul> <ul> <li>50 Shades of Grey</li> <li>50 minutes</li> <li>2015</li> </ul>获取数据但是使用CMIOObjectGetPropertyData注册侦听块从未收到过任何事件。

该问题的解决方案与CMIO *代码完全无关。 基本上,我忘了启动运行循环,这阻止了接收事件。

请看一下:currentRunLoop

添加一个简单的CMIOObjectAddPropertyListenerBlock为我解决了这个问题