Запись с микрофона не работает после открытия диалогового окна безопасности вручную

В основном то, что я пытаюсь сделать, это проверить, предоставлен ли доступ к микрофону или нет, если нет, показать диалоговое окно «Безопасность» и позволить пользователю выбрать «Разрешить» доступ в диалоговом окне, чтобы в следующий раз пользователь нажал кнопку записи , это не будет отображаться в поле безопасности, и запись должна работать немедленно.

В некотором обработчике событий 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(); для получения и настройки микрофона.

Пожалуйста помоги.


person Peter Lee    schedule 25.10.2013    source источник


Ответы (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 ссылаются на один и тот же (по умолчанию) микрофон.

person Peter Lee    schedule 25.10.2013
comment
Я бы помог, если бы вы добавили значительную часть кода, чтобы его можно было понять в контексте. Тем не менее, спасибо за решение. - person Omar Al-Ithawi; 05.01.2014