有没有全球方法来检查是否已在Flash中授予麦克风访问权限?

时间:2011-08-29 20:16:34

标签: flash flex actionscript-3 flash-builder

我目前正在建立一个需要麦克风互动的网站。我已经构建了处理声音及其外部接口的Flash组件。

正如您可能猜到的,外部接口的目的是允许UI完全由HTML / CSS / Javascript处理。除了几件事之外,它的效果很好。首先,如果Flash影片不可见,它将停止响应。我已经通过在视口中未使用的部分中将其作为1像素乘1像素来解决这个问题。

另一个问题是Flash有时会出现一个安全对话框,要求用户进行访问。现在,我已经弄清楚如何强制导致security dialog出现:

Security.showSettings(SecurityPanel.PRIVACY);

很好(附带问题:如果设置被触发,我该如何解决这个问题?)。

但这有两个缺点:

1. It doesn't theoretically catch the case where the user revokes privileges during the running of the application.
2. It doesn't detect if the user has already granted permission.

我认为解决这两个问题的方法是拥有一个全局标志(或者更有帮助的是,一个可绑定的属性或事件)来获取当前的安全状态以及何时更改它。

非常感谢任何见解。

更新

我更多地探讨了一下并写下了这个:

import flash.system.Security;
import flash.system.SecurityPanel;
import flash.external.ExternalInterface;
import flash.media.Microphone;
import flash.events.StatusEvent;

var m:Microphone = Microphone.getMicrophone();

m.addEventListener(StatusEvent.STATUS, function(e:StatusEvent){
    if(e.code == "Microphone.Unmuted") {
        ExternalInterface.call('window.SpeechWrapper.messenger.microphonePermissionGranted');
    } else {
        ExternalInterface.call('window.SpeechWrapper.messenger.microphonePermissionDenied');
    }
});

if(m.muted) {
    Security.showSettings(SecurityPanel.PRIVACY);
} else {
    ExternalInterface.call('window.SpeechWrapper.messenger.microphonePermissionGranted');
}

然而,麻烦的是,由于似乎没有办法弄清楚用户是否要求在安全域中记住选择,我无法提供一个独立的轻量级swf设计为请求许可。

1 个答案:

答案 0 :(得分:1)

该属性被称为静音。 Steven Xu在评论中回答。