2017-01-06 1 views
3

Je fais une application de base sur Objective-C et le framework AVFoundation, je veux détecter si la caméra intégrée pour Mac est utilisée par une autre application, j'ai réussi à le faire, mais renvoie toujours faux, même lorsque j'utilise l'appareil photo avec un autre logiciel.AVCaptureDevice isInUseByAnotherApplication renvoie toujours false

J'ai une fonction qui enveloppe ce code et est exécuté toutes les 2 secondes:

NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 
    for(AVCaptureDevice *camera in devices){ 
     NSLog([camera isInUseByAnotherApplication] ? @"YES DEVICE BEING USED": @"DEVICE NOT BEING USED"); 
     NSLog([camera isSuspended] ? @"YES DEVICE SUSPENDED": @"DEVICE NOT suspended"); 
     NSLog([camera manufacturer]); 
     NSLog([camera localizedName]); 

    } 

Le problème est, je reçois toujours le même résultat:

2017-01-06 13:02:24.657 Befective Agent[13749:175226] DEVICE NOT BEING USED 
2017-01-06 13:02:24.658 Befective Agent[13749:175226] DEVICE NOT suspended 
2017-01-06 13:02:24.658 Befective Agent[13749:175226] Apple Inc. 
2017-01-06 13:02:24.658 Befective Agent[13749:175226] FaceTime HD Camera (Built-in) 

EDIT

L'appareil photo qui apparaît sur le logiciel est le même que celui-ci, et je n'ai que l'appareil photo intégré du MacBook Pro.

Merci d'avance!

EDIT

Les logiciels que j'ai l'habitude d'utiliser l'appareil photo sont:

  • Hangouts
  • Skype
  • RedBooth
  • Slack

Répondre

3

Comme mentionné dans le lien ci-dessous, il retourne vrai que si une autre application est exclusivement utilisant l'appareil photo:

https://developer.apple.com/reference/avfoundation/avcapturedevice/1389512-isinusebyanotherapplication

Et ce verrou exclusif est ACQUIS comme ci-dessous:

https://developer.apple.com/reference/avfoundation/avcapturedevice/1387810-lockforconfiguration

+0

Comme En fait, lorsque je teste mon code, j'utilise l'appareil photo avec l'un des logiciels que j'ai mentionnés sur la question. –

+1

L'utilisation de ces logiciels ne signifie pas qu'ils utilisent exclusivement l'appareil photo. Par exemple, lorsque vous utilisez des hangouts, vous pouvez toujours utiliser Skype pour indiquer que Hangout ou Skype n'utilise pas la caméra EXCLUSIVEMENT. –

+0

Cela explique beaucoup, donc, il y a une autre façon de détecter si la caméra est utilisée? –