手动弹出安全对话框后,Flash麦克风录制不起作用

时间:2013-10-25 01:26:07

标签: flash security flex adobe microphone

基本上我要做的是检查是否授予麦克风访问权限,如果没有,则显示“安全”对话框并让用户在对话框中选择“允许”访问权限,以便下次用户点击录音按钮,它不会显示安全框,录音应该立即工作。

在某些buttonClick事件处理程序中,我将此代码用于检查麦克风访问权限是否已取消静音

var mic:Microphone = Microphone.getMicrophone();
if (mic == null) {
    return;
}
if (mic.muted) {
    Security.showSettings(SecurityPanel.PRIVACY);
    return;
}

//... Start recording using a library
  1. 如果麦克风访问在开头被拒绝(或静音),则会在执行buttonClick事件处理程序时显示安全框,这是预期的;

  2. 用户选择“允许”后会生成mic.muted = false,因此当用户再次点击该按钮时,该框不会显示,这也是预期的;

  3. 但是,有时,库中的录制功能将不再起作用。 有时它仍然可以工作,但是如果你右键单击Flash应用程序,并选择“设置”以弹出安全框,然后单击“拒绝”,然后重复步骤1& 2,您将始终看到步骤3中的行为:录制功能无效。

  4. 我检查了库的源代码以进行录制,它还使用var mic:Microphone = Microphone.getMicrophone();来获取和设置麦克风。

    请帮忙。

1 个答案:

答案 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都引用相同的(默认)麦克风。