as3确定相机访问是否被拒绝

时间:2012-01-23 03:32:32

标签: flash actionscript-3 camera microphone

如何确定Flash中是否拒绝访问相机和麦克风?

我可以拿到相机和麦克风,但我需要知道用户是否拒绝访问。

3 个答案:

答案 0 :(得分:6)

附加状态事件监听器并检查摄像头是否静音,请参阅docs:

  

在摄像头报告其状态时调度。在访问之前   摄像头,运行时显示一个允许用户允许的隐私对话框   或拒绝访问他们的相机。如果code属性的值是   “Camera.Muted”,用户拒绝允许SWF文件访问   用户的相机。如果code属性的值是   “Camera.Unmuted”,用户已经允许SWF文件访问了   用户的相机。   http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html#event:status

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

答案 1 :(得分: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 !? ...
    }
}

答案 2 :(得分:1)

当用户通过全局Flash播放器设置永久拒绝此网站的相机访问时,也会出现问题。在这种情况下camera.muted === true但没有安全对话框,因此没有StatusEvent。 有一些方法可以检测到这一点,例如:Detecting user's camera settings