2012-01-23 30 views

回答

6

連接狀態事件偵聽器和檢查相機是否靜音,請參閱文檔:

在攝像頭報告其狀態時調度。在訪問 攝像頭之前,運行時會顯示一個「隱私」對話框,以允許用戶允許 或拒絕其攝像頭的訪問。如果代碼屬性的值爲 「Camera.Muted」,則用戶拒絕允許SWF文件訪問用戶的相機 。如果代碼屬性的值爲 「Camera.Unmuted」,則用戶已允許SWF文件訪問用戶攝像機的 。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html#event:status

flash.media.Microphone也有同樣的事情。

4

原因如果您在設置面板中設置「記住」(右鍵單擊),將不會有彈出窗口,因此不會有狀態更改通知。

所以,要想知道如果你的相機是允許(和麥克風如果需要),你可以檢查muted attribut:

var camera:Camera = Camera.getCamera(); 
if (camera.muted) 
{ 
    camera.addEventListener(StatusEvent.STATUS, handleCameraStatus, false, 0, true); 
} 
else 
{ 
    camAllowed = true; 
    handleWebcam(); 
} 

,並在你的狀態處理

private function handleCameraStatus(e:StatusEvent):void 
{ 
    witch (e.code) 
    { 
     case 'Camera.Muted': 
     { 
      camAllowed = false; 
      trace("Camera muted"); 
      break; 
     } 
     case 'Camera.Unmuted': 
     { 
      camAllowed = true; 
      trace("Camera unmuted"); 
      handleWebcam(); 
      break; 
     } 
    } 
} 

(你如果需要,請按照相同的方式進行操作)

然後,當您調用您的方法來處理

private function handleWebcam() 
{ 
    if (camAllowed && micAllowed) 
    { 
     // Do what you need when all is OK 
    } 
    else 
    { 
     // Either wait for the 2 status to switch to true, either you got a problem !? ... 
    } 
} 
1

當用戶通過全局flash播放器設置永久拒絕攝像頭訪問時,也存在一個問題。在這種情況下,camera.muted === true但沒有安全對話框,因此沒有StatusEvent。 有一些方法可以檢測到這一點,在這裏:Detecting user's camera settings