在我的小型Flash应用中,我需要知道用户何时授予了对相机的访问权限。记录是否发生这种情况的记录方法是听取相机的“未静音”事件,如下所示:
private function handleCameraStatus(event:StatusEvent):void {
try {
_logger.log("Camera status event {code:" + event.code + ", type:" + event.type + "}");
switch (event.code) {
case "Camera.Muted":
_eventHandler.raiseError("Camera became unavailable");
break;
case "Camera.Unmuted":
_eventHandler.raiseEvent("onUserMediaRetrieved", _mic, _cam);
}
} catch (e:Error) {
_eventHandler.raiseError("Error handling connection status", e);
}
}
这是Adobe网站上多个地方推荐的方法,例如here和here。
此方法的问题在于,如果用户已将站点添加到其受信任站点列表中(以便自动获取访问权限,而无需在“Adobe Flash Player设置”对话框中单击“允许”), Camera.Unmuted
事件永远不会被触发。 (至少,这是我在几个不同站点上的测试表明的。)这使得监听Camera.Unmuted
或多或少无用,以确定您是否真的可以访问摄像头。
有关如何执行此操作的其他建议吗?
答案 0 :(得分:1)
检索相机后,您可以检查相机是否静音。如果已授予访问权限,则允许您跳过整个状态检查,例如用户将站点标记为“受信任”。
我还建议在静音的情况下手动提升安全面板,因为这会打开“记住我”对话框,允许用户保存他们的偏好并在下次删除唠叨。
这是一些伪代码:
var camera:Camera = Camera.getCamera();
if (camera.muted) {
Security.showSettings(SecurityPanel.PRIVACY);
// add status listener and all that
}
else
{
// start the camera/etc
}
这个Adobe示例更加充实: