在ActionScript中授予何时访问摄像头的可靠方式

时间:2013-05-23 20:27:39

标签: flash actionscript camera

在我的小型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网站上多个地方推荐的方法,例如herehere

此方法的问题在于,如果用户已将站点添加到其受信任站点列表中(以便自动获取访问权限,而无需在“Adobe Flash Player设置”对话框中单击“允许”), Camera.Unmuted事件永远不会被触发。 (至少,这是我在几个不同站点上的测试表明的。)这使得监听Camera.Unmuted或多或少无用,以确定您是否真的可以访问摄像头。

有关如何执行此操作的其他建议吗?

1 个答案:

答案 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示例更加充实:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html#getCamera()