0

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

在某些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 步中的行为: 录音功能不工作。

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

请帮忙。

4

1 回答 1

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

于 2013-10-25T18:16:34.830 回答