我目前正在建立一个需要麦克风互动的网站。我已经构建了处理声音及其外部接口的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设计为请求许可。
答案 0 :(得分:1)
该属性被称为静音。 Steven Xu在评论中回答。