From 995605fc61f47e45b284fee88b3208f7a9e7143c Mon Sep 17 00:00:00 2001 From: Jerome Etienne Date: Fri, 28 Jul 2017 03:58:26 +0100 Subject: [PATCH] added callback when camera is refused --- three.js/threex-artoolkitsource.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/three.js/threex-artoolkitsource.js b/three.js/threex-artoolkitsource.js index ff204cb..6aaf6a1 100644 --- a/three.js/threex-artoolkitsource.js +++ b/three.js/threex-artoolkitsource.js @@ -23,16 +23,16 @@ THREEx.ArToolkitSource = function(parameters){ ////////////////////////////////////////////////////////////////////////////// // Code Separator ////////////////////////////////////////////////////////////////////////////// -THREEx.ArToolkitSource.prototype.init = function(onReady){ +THREEx.ArToolkitSource.prototype.init = function(onReady, onError){ var _this = this if( this.parameters.sourceType === 'image' ){ - var domElement = this._initSourceImage(onSourceReady) + var domElement = this._initSourceImage(onSourceReady, onError) }else if( this.parameters.sourceType === 'video' ){ - var domElement = this._initSourceVideo(onSourceReady) + var domElement = this._initSourceVideo(onSourceReady, onError) }else if( this.parameters.sourceType === 'webcam' ){ // var domElement = this._initSourceWebcamOld(onSourceReady) - var domElement = this._initSourceWebcam(onSourceReady) + var domElement = this._initSourceWebcam(onSourceReady, onError) }else{ console.assert(false) } @@ -121,8 +121,12 @@ THREEx.ArToolkitSource.prototype._initSourceVideo = function(onReady) { // handle webcam source //////////////////////////////////////////////////////////////////////////////// -THREEx.ArToolkitSource.prototype._initSourceWebcam = function(onReady) { +THREEx.ArToolkitSource.prototype._initSourceWebcam = function(onReady, onError) { var _this = this + // init default value + onError = onError || function(error){ + alert('Cant init webcam due to '+error.message) + } var domElement = document.createElement('video'); domElement.setAttribute('autoplay', ''); @@ -134,7 +138,8 @@ THREEx.ArToolkitSource.prototype._initSourceWebcam = function(onReady) { if (navigator.mediaDevices === undefined || navigator.mediaDevices.enumerateDevices === undefined || navigator.mediaDevices.getUserMedia === undefined ){ - alert("WebRTC issue! navigator.mediaDevices.enumerateDevices not present in your browser"); + onError("WebRTC issue! navigator.mediaDevices.enumerateDevices not present in your browser") + return } navigator.mediaDevices.enumerateDevices().then(function(devices) { @@ -170,11 +175,14 @@ THREEx.ArToolkitSource.prototype._initSourceWebcam = function(onReady) { clearInterval(interval) }, 1000/50); }).catch(function(error) { - console.log("Can't access user media", error); - alert("Can't access user media :()"); + onError({ + message: "Can't access user media :()" + }); + }); + }).catch(function(error) { + onError({ + message: error.message }); - }).catch(function(err) { - console.log(err.name + ": " + err.message); }); return domElement -- GitLab