2010-10-11 9 views
2

D'un objet Flash, je voudrais être en mesure de détecter la présence de une webcam que l'utilisateur pourrait d'accorder l'accès à, sans réellement demander à l'utilisateur s'il veut accorder l'accès. C'est pour rationaliser une grande application qui a des fonctionnalités supplémentaires si une webcam existe — s'il y a une webcam, l'application présentera plusieurs boîtes de dialogue qui mènent à l'invite normale de sécurité de la caméra, mais si l'utilisateur n'a pas le matériel, Je veux les ignorer complètement. Demander l'accès à la came avant ces boîtes de dialogue n'aura aucun sens pour l'utilisateur.Détect Flash accessible sans inviter l'utilisateur pour accéder à la caméra si l'on existe

Il semble qu'il ne soit pas possible d'appeler Camera.getCamera() sans que l'invite de sécurité ne se produise. Y at-il un travail autour? (Par exemple, pourrais-je, peut-être, appeler getCamera dans un objet Flash caché et inspecter sa valeur de retour, ou bloque-t-il jusqu'à ce que l'utilisateur reconnaisse l'invite de sécurité?)

Répondre

4

Cela fonctionne avec Haxe mais devrait aussi être possible avec ActionScript 3.

if (Camera.names.length != 0) { 
    // user has camera 
    // this triggers the access dialog 
    var camera:Camera = Camera.getCamera(); 
} 
else { 
    // user has no camera 
} 
+0

Finalement essayé de ceci: cela fonctionne. Et merci aussi de m'avoir mis sur haXe, maintenant je n'ai plus à me battre avec l'IDE Flash! – zwol

0

Je ne pense pas qu'il existe une solution de contournement à l'intérieur le flash ou pour toute application Web comme le point de sécurité (en limitant l'accès aux périphériques de l'utilisateur) serait perdu de cela. Pour autant que je sache, la seule solution à votre problème est de demander à l'utilisateur avant de demander la fonction de détection de la caméra.

je pourrais ressembler à une vraie corvée, mais quelque chose comme:

  • Afficher la boîte de dialogue « Avez-vous un appareil photo? » - Oui/Non
  • Si oui show Dialog "S'il vous plaît accorder le lecteur flash pour accéder appareil photo ..." - OK
  • Détecter la caméra (en utilisant la méthode getCamera )
  • Si show échoué Dialog
  • autre commencer à montrer toutes les boîtes de dialogue que vous avez l'intention de.

La caméra peut également être présente physiquement & non installée. Donc, si un utilisateur ne sait pas ou l'appareil photo est inaccessible pour une raison quelconque, vous pourriez avoir besoin de comprendre cela. Donc pour cela utiliser

flash.media.Camera.names 

et de vérifier si elle est vide ou non. Ou mieux vous pourriez simplement tirer quelques octets de données de la caméra de l'utilisateur & voir si elle existe vraiment & est accessible.

+0

Je ne vois pas qu'il vainc la sécurité pour éviter de déranger l'utilisateur avec une invite sur un périphérique qu'ils n'ont pas. – zwol

+1

Qui a dit de vaincre la sécurité. La solution de contournement que j'ai proposée n'est pas pour la sécurité, c'est pour le travail que vous essayez d'accomplir. Si flash avait vraiment quelque chose comme ça, le flash pourrait ne pas avoir été si populaire du tout. Au moins, je ne voudrais pas utiliser une chose qui permet aux sites Web d'apprendre automatiquement sur les appareils connectés à mon PC sans même que je sache à peu près la même chose. – loxxy

0

Cela peut également fonctionner: Capabilities.hasVideoEncoder;

L'approche Camera.names.length semble cependant plus fiable (comme suggéré par Hippo).