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];

のための問題を修正追加
関連する問題