as3 определяет, было ли отказано в доступе к камере - PullRequest
8 голосов
/ 23 января 2012

Как я могу определить, был ли доступ к камере и микрофону запрещен во Flash?

Я могу получить камеру и микрофон, но мне нужно знать, отказал ли пользователь в доступе.

Ответы [ 3 ]

6 голосов
/ 23 января 2012

Подключите прослушиватель событий состояния и проверьте, не отключена ли камера, см. Документы:

Отправляется, когда камера сообщает о своем состоянии. Прежде чем получить доступ к камера, среда выполнения отображает диалоговое окно конфиденциальности, чтобы позволить пользователям или запретить доступ к своей камере. Если значение свойства кода «Camera.Muted», пользователь отказался разрешить доступ SWF-файла к камера пользователя. Если значение свойства кода «Camera.Unmuted», пользователь разрешил доступ SWF-файла к камера пользователя. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html#event:status

flash.media.Микрофон тоже самое.

4 голосов
/ 11 августа 2013

Причина, если вы установили «Запомнить» на панели настроек (щелчок правой кнопкой мыши), всплывающее окно не будет отображаться и уведомление об изменении статуса не будет.

Итак, чтобы узнать, разрешена ли ваша камера (и микрофон, если необходимо), вы можете проверить атрибут muted:

var camera:Camera = Camera.getCamera();
if (camera.muted)
{
    camera.addEventListener(StatusEvent.STATUS, handleCameraStatus, false, 0, true);
}
else
{
    camAllowed = true;
    handleWebcam();
}

и в вашем статусе обработчик

private function handleCameraStatus(e:StatusEvent):void
{
    witch (e.code)
    {
        case 'Camera.Muted':
        {
            camAllowed = false;
            trace("Camera muted");
            break;
        }
        case 'Camera.Unmuted':
        {
            camAllowed = true;
            trace("Camera unmuted");
            handleWebcam();
            break;
        }
    }
}

(вы делаете то же самое для микрофона, если нужно)

тогда, когда вы вызываете ваш метод для обработки

private function handleWebcam()
{
    if (camAllowed && micAllowed)
    {
        // Do what you need when all is OK
    }
    else
    {
        // Either wait for the 2 status to switch to true, either you got a problem !? ...
    }
}
1 голос
/ 24 ноября 2014

Существует также проблема, когда пользователь навсегда отказывает в доступе к этому сайту через глобальные настройки флеш-плеера.В этом случае camera.muted === true, но нет диалогового окна безопасности и, следовательно, нет StatusEvent.Есть несколько способов определить это здесь: Определение настроек камеры пользователя

...