【发布时间】:2012-02-16 12:34:19
【问题描述】:
如何确定在 Flash 中是否拒绝访问摄像头和麦克风?
我可以拿到摄像头和麦克风,但我需要知道用户是否拒绝访问。
【问题讨论】:
标签: flash actionscript-3 camera microphone
如何确定在 Flash 中是否拒绝访问摄像头和麦克风?
我可以拿到摄像头和麦克风,但我需要知道用户是否拒绝访问。
【问题讨论】:
标签: flash actionscript-3 camera microphone
附加一个状态事件监听器并检查相机是否静音,请参阅文档:
在摄像机报告其状态时调度。在访问一个 相机,运行时显示一个隐私对话框让用户允许 或拒绝访问他们的相机。如果代码属性的值为 “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 也有同样的东西。
【讨论】:
因为如果您在设置面板中设置“记住”(右键单击),则不会弹出窗口,因此不会通知状态更改。
所以,为了知道你的摄像头是否被允许(如果需要麦克风),你可以查看muted 属性:
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 !? ...
}
}
【讨论】:
还有一个问题,即用户通过全局 Flash 播放器设置永久拒绝此站点的相机访问权限。在那种情况下camera.muted === true,但没有安全对话框,因此没有StatusEvent。
有一些方法可以检测到这一点,这里:Detecting user's camera settings
【讨论】: