diff --git a/lms/static/js/verify_student/CameraCapture.as b/lms/static/js/verify_student/CameraCapture.as index 0f5d5acae1..a3f68863c6 100644 --- a/lms/static/js/verify_student/CameraCapture.as +++ b/lms/static/js/verify_student/CameraCapture.as @@ -18,11 +18,13 @@ package import flash.display.PNGEncoderOptions; import flash.display.Sprite; import flash.events.Event; + import flash.events.StatusEvent; import flash.external.ExternalInterface; import flash.geom.Rectangle; import flash.media.Camera; import flash.media.Video; import flash.utils.ByteArray; + import mx.utils.Base64Encoder; [SWF(width="640", height="480")] @@ -35,15 +37,17 @@ package private var camera:Camera; private var video:Video; private var b64EncodedImage:String = null; + private var permissionGiven:Boolean = false; public function CameraCapture() { - addEventListener(Event.ADDED_TO_STAGE, init); + addEventListener(Event.ADDED_TO_STAGE, init); } protected function init(e:Event):void { camera = Camera.getCamera(); camera.setMode(VIDEO_WIDTH, VIDEO_HEIGHT, 30); + camera.addEventListener(StatusEvent.STATUS, statusHandler); video = new Video(VIDEO_WIDTH, VIDEO_HEIGHT); video.attachCamera(camera); @@ -53,6 +57,7 @@ package ExternalInterface.addCallback("snap", snap); ExternalInterface.addCallback("reset", reset); ExternalInterface.addCallback("imageDataUrl", imageDataUrl); + ExternalInterface.addCallback("cameraAuthorized", cameraAuthorized); // Notify the container that the SWF is ready to be called. ExternalInterface.call("setSWFIsReady"); @@ -98,6 +103,24 @@ package } return ""; } + + public function cameraAuthorized():Boolean { + return permissionGiven; + } + + public function statusHandler(event:StatusEvent):void { + switch (event.code) + { + case "Camera.Muted": + // User clicked Deny. + permissionGiven = false; + break; + case "Camera.Unmuted": + // "User clicked Accept. + permissionGiven = true; + break; + } + } } } diff --git a/lms/static/js/verify_student/CameraCapture.swf b/lms/static/js/verify_student/CameraCapture.swf index d35e25fc26..47f87c9493 100644 Binary files a/lms/static/js/verify_student/CameraCapture.swf and b/lms/static/js/verify_student/CameraCapture.swf differ diff --git a/lms/static/js/verify_student/photocapture.js b/lms/static/js/verify_student/photocapture.js index ee8e2426e5..5c16294177 100644 --- a/lms/static/js/verify_student/photocapture.js +++ b/lms/static/js/verify_student/photocapture.js @@ -124,7 +124,12 @@ function initSnapshotHandler(names, hasHtml5CameraSupport) { video[0].pause(); } else { - image[0].src = flashCapture[0].snap(); + if (flashCapture[0].cameraAuthorized()) { + image[0].src = flashCapture[0].snap(); + } + else { + return false; + } } doSnapshotButton(captureButton, resetButton, approveButton); @@ -186,7 +191,7 @@ function initSnapshotHandler(names, hasHtml5CameraSupport) { function objectTagForFlashCamera(name) { return '';