Существует ли глобальный способ проверить, был ли предоставлен доступ к микрофону во Flash? - PullRequest
6 голосов
/ 30 августа 2011

В настоящее время я создаю веб-сайт, который требует взаимодействия с микрофоном. Я уже создал компонент Flash, который обрабатывает звук и его внешние интерфейсы.

Назначение внешних интерфейсов, как вы можете догадаться, состоит в том, чтобы полностью обрабатывать пользовательский интерфейс с помощью HTML / CSS / Javascript. Он отлично работает, за исключением нескольких вещей. Во-первых, Flash-фильм перестает быть отзывчивым, если его не видно. Я собрал вместе решение этой проблемы, просто сделав его размером 1 на 1 пиксель в неиспользуемой части окна просмотра.

Другая проблема заключается в том, что Flash иногда представляет диалоговое окно безопасности, запрашивающее у пользователя доступ. Теперь я выяснил, как принудительно вызвать диалоговое окно безопасности :

Security.showSettings(SecurityPanel.PRIVACY);

Fine (дополнительный вопрос: как я могу вызвать обратный вызов при срабатывании настройки?).

Но у этого есть два недостатка:

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, предназначенный для попросить разрешения.

1 Ответ

1 голос
/ 10 апреля 2013

свойство называется приглушенным.ответил Steven Xu в комментариях.

...