Flash 检测可访问的闪光灯摄像头,而不提示用户访问摄像头(如果存在)
通过Flash对象,我希望能够检测到用户可能授予访问权限的网络摄像头的存在,而不需要询问用户是否希望授予访问权限。这是为了简化一个大型应用程序,如果存在网络摄像头,该应用程序将具有额外的功能-如果存在网络摄像头,该应用程序将显示几个对话框,导致正常的cam安全提示,但如果用户没有硬件,我想跳过它们。在这些对话框之前请求访问cam对用户来说没有意义Flash 检测可访问的闪光灯摄像头,而不提示用户访问摄像头(如果存在),flash,webcam,Flash,Webcam,通过Flash对象,我希望能够检测到用户可能授予访问权限的网络摄像头的存在,而不需要询问用户是否希望授予访问权限。这是为了简化一个大型应用程序,如果存在网络摄像头,该应用程序将具有额外的功能-如果存在网络摄像头,该应用程序将显示几个对话框,导致正常的cam安全提示,但如果用户没有硬件,我想跳过它们。在这些对话框之前请求访问cam对用户来说没有意义 如果没有安全提示,似乎无法调用Camera.getCamera()。有解决办法吗?(例如,我是否可以在隐藏的Flash对象中调用getCamera并检
如果没有安全提示,似乎无法调用
Camera.getCamera()
。有解决办法吗?(例如,我是否可以在隐藏的Flash对象中调用getCamera
并检查其返回值,或者在用户确认安全提示之前它是否会阻塞?我认为Flash内部或任何web应用程序都不存在解决方案作为整个安全点(通过限制对用户设备的访问)将从此丢失
据我所知,解决您问题的唯一方法是在提示摄像头检测功能之前询问用户
我可能听起来像个无赖,但有点像:
- 显示对话框“您有照相机吗?”-是/否
- 如果是,则显示对话框“请授予 flash player可访问摄像头…-确定
- 检测摄像头(使用getCamera (方法)
- 如果显示对话框失败
- 否则,开始显示所有的几个 您打算创建的对话框
flash.media.Camera.names
然后检查它是否为空。或者更好的方法是,您只需从用户的相机中提取几个字节的数据,看看它是否真的存在,是否可以访问。这适用于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
}
这可能也适用:Capabilities.hasvideocoder
Camera.names.length方法似乎更可靠(正如Hippo所建议的那样).我不认为它会破坏安全性,以避免在用户没有设备的情况下提示用户。谁说会破坏安全性。我建议的解决方法不是为了安全性,而是为了您试图完成的工作。如果flash真的有这样的功能,flash可能根本就不那么受欢迎。至少我会这样做不要使用一种能让网站在我不知道的情况下自动了解连接到我电脑上的设备的东西。最后,我开始尝试这个:它是有效的。同时也感谢你让我使用haXe,现在我不必再为Flash IDE而挣扎了!