当某些进程开始使用相机时,我需要收到一个事件。我是通过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);
}
答案 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
为我解决了这个问题