从Flash对象中,我希望能够检测用户可能授予访问权限的网络摄像头的存在,而无需实际询问用户是否存在想要授予访问权限。这是为了简化具有额外功能的大型应用程序,如果存在网络摄像头 - 如果有网络摄像头,应用程序将呈现几个导致正常凸轮安全提示的对话框,但如果用户没有硬件,我想完全跳过它们。在这些对话框之前请求访问凸轮对用户没有意义。
如果没有安全提示,似乎无法呼叫Camera.getCamera()
。有解决方法吗? (例如,我是否可以在隐藏的Flash对象中调用getCamera
并检查其返回值,或者在用户确认安全提示之前阻止它?)
答案 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.media.Camera.names
并检查它是否为空。或者更好的是,您只需从用户的相机中拉出几个字节的数据即可。看它是否真的存在&可以访问。
答案 2 :(得分:0)
这可能也有效:Capabilities.hasVideoEncoder;
Camera.names.length方法似乎更可靠(正如Hippo所建议的那样)。