检测可访问Flash的摄像机,而不提示用户访问摄像机(如果存在)

时间:2010-10-11 18:16:10

标签: flash webcam

从Flash对象中,我希望能够检测用户可能授予访问权限的网络摄像头的存在,而无需实际询问用户是否存在想要授予访问权限。这是为了简化具有额外功能的大型应用程序,如果存在网络摄像头 - 如果有网络摄像头,应用程序将呈现几个导致正常凸轮安全提示的对话框,但如果用户没有硬件,我想完全跳过它们。在这些对话框之前请求访问凸轮对用户没有意义。

如果没有安全提示,似乎无法呼叫Camera.getCamera()。有解决方法吗? (例如,我是否可以在隐藏的Flash对象中调用getCamera并检查其返回值,或者在用户确认安全提示之前阻止它?)

3 个答案:

答案 0 :(得分:4)

这适用于Haxe,但也可以使用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
}

答案 1 :(得分:0)

我认为在Flash或任何Web应用程序中都没有解决方法,因为整个安全点(通过限制对用户设备的访问)将会从中丢失。

据我所知,解决问题的唯一方法是在提示相机检测功能之前询问用户。

我可能听起来像一个无赖但有点像:

  • 显示对话框“你有相机吗?” - 是/否
  • 如果是,则显示对话框“请批准 Flash播放器访问摄像头......“ - 好的
  • 检测相机(使用getCamera 方法)
  • 如果显示失败,请显示对话
  • 否则开始显示所有几个 你想要的对话。

有时相机可能会出现在物理上和未安装。因此,如果用户不知道或因任何原因无法访问摄像头,您可能需要弄明白。所以对于那个用途

flash.media.Camera.names

并检查它是否为空。或者更好的是,您只需从用户的相机中拉出几个字节的数据即可。看它是否真的存在&可以访问。

答案 2 :(得分:0)

这可能也有效:Capabilities.hasVideoEncoder;

Camera.names.length方法似乎更可靠(正如Hippo所建议的那样)。