基本上我要做的是检查是否授予麦克风访问权限,如果没有,则显示“安全”对话框并让用户在对话框中选择“允许”访问权限,以便下次用户点击录音按钮,它不会显示安全框,录音应该立即工作。
在某些buttonClick
事件处理程序中,我将此代码用于检查麦克风访问权限是否已取消静音
var mic:Microphone = Microphone.getMicrophone();
if (mic == null) {
return;
}
if (mic.muted) {
Security.showSettings(SecurityPanel.PRIVACY);
return;
}
//... Start recording using a library
如果麦克风访问在开头被拒绝(或静音),则会在执行buttonClick
事件处理程序时显示安全框,这是预期的;
用户选择“允许”后会生成mic.muted = false
,因此当用户再次点击该按钮时,该框不会显示,这也是预期的;
但是,有时,库中的录制功能将不再起作用。 有时它仍然可以工作,但是如果你右键单击Flash应用程序,并选择“设置”以弹出安全框,然后单击“拒绝”,然后重复步骤1& 2,您将始终看到步骤3中的行为:录制功能无效。
我检查了库的源代码以进行录制,它还使用var mic:Microphone = Microphone.getMicrophone();
来获取和设置麦克风。
请帮忙。
答案 0 :(得分:1)
这没有任何意义:如果我将var mic:Microphone = Microphone.getMicrophone();
移出处理程序,它就会起作用:
var mic:Microphone = Microphone.getMicrophone();
private function buttonClickHandler():void
{
if (mic == null) {
return;
}
if (mic.muted) {
Security.showSettings(SecurityPanel.PRIVACY);
return;
}
//... Start recording using a library
}
这没有意义,因为http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Microphone.html
对Microphone.getMicrophone()的多次调用引用相同 麦克风。因此,如果您的代码包含行mic1 = Microphone.getMicrophone()和mic2 = Microphone.getMicrophone(), mic1和mic2都引用相同的(默认)麦克风。