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
.
Есть несколько способов обнаружить это, здесь:обнаружение настроек камеры пользователя