0

在我的小 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);
    }
}

这是 Adob​​e 网站上多个地方推荐的方法,例如,这里这里

这种方法的问题在于,如果用户已将该站点添加到他或她的受信任站点列表中(以便自动授予访问权限,而无需在 Adob​​e Flash Player 设置对话框中单击“允许”),则该Camera.Unmuted事件永远不会被解雇。(至少,这是我在几个不同网站上的测试所表明的。)这使得聆听Camera.Unmuted或多或少无法确定您是否真的可以使用相机。

关于如何做到这一点的任何其他建议?

4

1 回答 1

1

您可以在检索到它的引用后检查相机是否已静音。如果已授予访问权限,这允许您跳过整个状态检查,例如用户将站点标记为“受信任”的情况。

我还建议在静音的情况下手动提升安全面板,因为这会弹出“记住我”对话框,让您的用户保存他们的偏好并在下次删除唠叨。

这是一些伪代码:

var camera:Camera = Camera.getCamera();

if (camera.muted) {
    Security.showSettings(SecurityPanel.PRIVACY);

    // add status listener and all that
}
else 
{
    // start the camera/etc
}

这个 Adob​​e 示例更加充实:

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

于 2013-05-23T22:36:27.340 回答