as3 определите, был ли запрещен доступ к камере

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

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

3 ответов


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

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

вспышка.сми.У микрофона то же самое.


причина если вы установите "запомнить" в панели настроек (щелкните правой кнопкой мыши), не будет всплывающего окна и поэтому нет уведомления об изменении статуса.

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

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 !? ...
    }
}

существует также проблема, когда пользователь запретил доступ камеры для этого сайта навсегда через глобальные настройки flash player. В таком случае ...--0--> но нет диалога безопасности и, следовательно, нет StatusEvent. Есть несколько способов обнаружить это, здесь:обнаружение настроек камеры пользователя