CMIOObjectGetPropertyData

CMIOObjectGetPropertyData

当某些过程开始使用相机时,我需要接收一个事件。我是通过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);
}

最佳答案

我也有同样的问题。使用CMIOObjectGetPropertyData获取数据有效,但是使用CMIOObjectAddPropertyListenerBlock注册侦听器块从未收到任何事件。

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

请在这里看看:currentRunLoop

添加一个简单的[[NSRunLoop currentRunLoop] run];为我解决了这个问题

关于objective-c - CoreMediaIO,错误地更新了属性kCMIODevicePropertyDeviceIsRunningSomewhere,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42681127/

10-13 08:44