如何确定Flash中是否拒绝访问相机和麦克风?
我可以拿到相机和麦克风,但我需要知道用户是否拒绝访问。
答案 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