2017-03-08 2 views
1

일부 프로세스가 카메라를 사용하기 시작할 때 이벤트를 받아야합니다. CMIOObjectGetPropertyData를 통해이 작업을 수행했습니다. 하지만 제대로 작동하지 않습니다. 올바른 값은 처음 액세스 할 때뿐입니다.CoreMediaIO, 잘못 업데이트 된 속성 kCMIODevicePropertyDeviceIsRunningSomewhere

또한 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

나는 또한 동일한 문제가있었습니다. CMIOObjectGetPropertyData으로 데이터를 가져 오는 중 CMIOObjectAddPropertyListenerBlock이라는 수신기 블록을 등록하는 데 이벤트가 전혀 수신되지 않았습니다.

문제의 해결 방법은 CMIO * 코드와 전혀 관련이 없습니다. 기본적으로 실행 루프를 시작하는 것을 잊었고 이벤트 수신을 차단했습니다.

여기에 봐 주시기 바랍니다 : currentRunLoop

간단한 [[NSRunLoop currentRunLoop] run];

을위한 문제를 해결 추가