define(["activity/recordrtc", "sugar-web/activity/activity", "sugar-web/datastore", "activity/gif-recorder"], function (recordRTC, activity, datastore, gifRecorder) {
|
|
|
|
function displayAlertMessage(message) {
|
|
var div = document.createElement("p");
|
|
div.innerHTML = message;
|
|
div.style.color = "#f00";
|
|
div.style.position = "fixed";
|
|
div.style.top = "0px";
|
|
div.style.width = "auto";
|
|
div.style.padding = "4px";
|
|
div.style.fontSize = "42px";
|
|
div.style.background = "#fff";
|
|
document.body.appendChild(div);
|
|
div.style.left = document.body.clientWidth / 2 - (div.getBoundingClientRect().width / 2) + "px";
|
|
setTimeout(function () {
|
|
div.parentNode.removeChild(div);
|
|
}, 3000);
|
|
}
|
|
|
|
var captureHelper = {
|
|
ids: [],
|
|
by: "by",
|
|
popupMode: false,
|
|
width: 320,
|
|
height: 240,
|
|
|
|
displayLoading: function () {
|
|
var loading = document.getElementById("loading");
|
|
loading.style.top = parseInt(5 * document.body.clientHeight / 100) + "px";
|
|
loading.style.left = parseInt(5 * document.body.clientWidth / 100) + "px";
|
|
loading.style.width = parseInt(90 * document.body.clientWidth / 100) + "px";
|
|
loading.style.padding = "10px";
|
|
loading.style.display = "block";
|
|
},
|
|
|
|
hideLoading: function () {
|
|
var loading = document.getElementById("loading");
|
|
loading.style.display = "none";
|
|
},
|
|
|
|
displayAllData: function (datas) {
|
|
var t = this;
|
|
for (var i = 0; i < datas.length; i++) {
|
|
t.displayData(datas[i]);
|
|
}
|
|
},
|
|
|
|
forgeAndInsertData: function (data) {
|
|
var t = this;
|
|
this.insertData(data, function (error, metadata) {
|
|
var data = null;
|
|
var datas = datastore.find();
|
|
var found = false;
|
|
for (i = 0; i < datas.length; i++) {
|
|
if (datas[i].objectId == metadata) {
|
|
found = true;
|
|
data = datas[i];
|
|
break;
|
|
}
|
|
}
|
|
if (!found) {
|
|
displayAlertMessage("No more space<br/><div style='text-align: center;'><img src='icons/emblem-warning.svg'></div>");
|
|
return;
|
|
}
|
|
t.ids.push(metadata);
|
|
activity.getDatastoreObject().setDataAsText(JSON.stringify({ids: t.ids}));
|
|
activity.getDatastoreObject().save(function (error) {
|
|
});
|
|
var dsObject = new datastore.DatastoreObject(data.objectId);
|
|
dsObject.loadAsText(function(err, meta, text) {
|
|
data.text = text;
|
|
captureHelper.displayData(data, true);
|
|
});
|
|
});
|
|
},
|
|
|
|
deleteRecord: function(record,metadata){
|
|
var t = this;
|
|
record.parentNode.removeChild(record);
|
|
t.ids.splice(t.ids.indexOf(metadata),1);
|
|
activity.getDatastoreObject().setDataAsText(JSON.stringify({ids: t.ids}));
|
|
activity.getDatastoreObject().save(function (error) {
|
|
});
|
|
|
|
},
|
|
|
|
generateAudioPopup: function (fullData, originalAudio, metadata) {
|
|
var audio = document.createElement("audio");
|
|
|
|
audio.src = fullData.data;
|
|
audio.style.padding = "0px";
|
|
audio.style.zIndex = "98";
|
|
audio.setAttribute("controls", "");
|
|
audio.style.width = "100%";
|
|
audio.style.height = "100px";
|
|
audio.style.paddingBottom = "100px";
|
|
|
|
return this.generatePopup(fullData, audio, originalAudio, metadata);
|
|
},
|
|
|
|
generateVideoPopup: function (fullData, originalVideo, metadata) {
|
|
var video = document.createElement("video");
|
|
|
|
video.src = fullData.data;
|
|
video.style.padding = "0px";
|
|
video.style.zIndex = "98";
|
|
video.setAttribute("controls", "");
|
|
video.style.width = "100%";
|
|
video.style.maxHeight = (90 * document.body.clientHeight / 100) + "px";
|
|
video.style.maxWidth = (90 * document.body.clientWidth / 100) + "px";
|
|
video.style.paddingBottom = "100px";
|
|
|
|
|
|
return this.generatePopup(fullData, video, originalVideo, metadata);
|
|
},
|
|
|
|
generateImagePopup: function (fullData, originalImage, metadata, record) {
|
|
var img = document.createElement("img");
|
|
//img.src = fullData.data;
|
|
img.style.backgroundImage = "url('" + fullData.data + "')";
|
|
img.style.backgroundRepeat = "no-repeat";
|
|
img.style.backgroundPosition = "center center";
|
|
|
|
img.style.padding = "0px";
|
|
img.style.zIndex = "98";
|
|
img.style.margin = "auto";
|
|
img.style.display = "block";
|
|
img.style.maxHeight = (90 * document.body.clientHeight / 100) + "px";
|
|
img.style.maxWidth = (90 * document.body.clientWidth / 100) + "px";
|
|
img.style.backgroundSize = "contain";
|
|
img.setAttribute('height', img.style.maxHeight);
|
|
img.setAttribute('width', img.style.maxWidth);
|
|
|
|
return this.generatePopup(fullData, img, originalImage, metadata, record);
|
|
},
|
|
|
|
generatePopup: function (fullData, innerElement, originalImage, metadata, record) {
|
|
var t = this;
|
|
if(typeof(record)=='undefined'){
|
|
record = originalImage;
|
|
}
|
|
|
|
var div = document.createElement("div");
|
|
|
|
|
|
div.style.position = "fixed";
|
|
div.style.background = "#000";
|
|
div.style.zIndex = "97";
|
|
div.style.minHeight = "42px";
|
|
div.style.top = parseInt(5 * document.body.clientHeight / 100) + "px";
|
|
div.style.left = parseInt(5 * document.body.clientWidth / 100) + "px";
|
|
div.style.width = parseInt(90 * document.body.clientWidth / 100) + "px";
|
|
|
|
var title = document.createElement("span");
|
|
title.style.zIndex = "98";
|
|
title.style.padding = "5px";
|
|
title.style.position = "absolute";
|
|
title.innerHTML = metadata.title;
|
|
title.style.background = "#000";
|
|
title.style.color = "#fff";
|
|
title.style.fontSize = "26px";
|
|
div.appendChild(title);
|
|
|
|
div.appendChild(innerElement);
|
|
|
|
|
|
var closeButton = document.createElement("button");
|
|
closeButton.style.position = "absolute";
|
|
closeButton.style.zIndex = "99";
|
|
closeButton.style.borderRadius = "0px";
|
|
closeButton.style.float = "right";
|
|
closeButton.style.backgroundImage = "url(icons/close.svg)";
|
|
closeButton.style.backgroundRepeat = "no-repeat";
|
|
closeButton.style.backgroundPosition = "center center";
|
|
closeButton.style.width = "42px";
|
|
closeButton.style.height = "42px";
|
|
closeButton.style.top = "0px";
|
|
closeButton.style.right = "0px";
|
|
closeButton.addEventListener("click", function () {
|
|
div.parentNode.removeChild(div);
|
|
t.popupMode = false;
|
|
});
|
|
div.appendChild(closeButton);
|
|
|
|
var removeButton = document.createElement("button");
|
|
removeButton.style.display = 'inline-block';
|
|
removeButton.style.float = "left";
|
|
removeButton.style.position = "absolute";
|
|
removeButton.zIndex = "99";
|
|
removeButton.className = "delbtn";
|
|
removeButton.style.background = "url('icons/delete.svg')";
|
|
removeButton.onclick = function(e){
|
|
t.deleteRecord(record, metadata);
|
|
div.parentNode.removeChild(div);
|
|
t.popupMode = false;
|
|
};
|
|
div.appendChild(removeButton);
|
|
|
|
return div;
|
|
},
|
|
|
|
displayImage: function (fullData, first, metadata) {
|
|
var t = this;
|
|
|
|
var div = document.createElement("div");
|
|
div.style.border = "1px solid #000";
|
|
div.style.marginLeft = "5px";
|
|
div.style.marginTop = "5px";
|
|
div.style.width = this.width + "px";
|
|
div.style.height = this.height + "px";
|
|
div.style.display = 'inline-block';
|
|
|
|
var img = document.createElement("div");
|
|
img.style.display = "inline-block"
|
|
img.style.border = "1px solid #000";
|
|
img.zIndex = "98";
|
|
img.style.position = "absolute";
|
|
img.style.width = this.width + "px";
|
|
img.style.height = this.height + "px";
|
|
//img.src = fullData.data;
|
|
img.style.backgroundImage = "url('" + fullData.data + "')";
|
|
img.style.backgroundRepeat = "no-repeat";
|
|
img.style.backgroundPosition = "center";
|
|
|
|
div.appendChild(img);
|
|
|
|
var videoIndicator = document.createElement("img");
|
|
videoIndicator.style.display = 'inline-block';
|
|
videoIndicator.style.float = "left";
|
|
videoIndicator.style.position = "absolute";
|
|
videoIndicator.zIndex = "99";
|
|
videoIndicator.style.width = this.width + "px";
|
|
videoIndicator.style.height = this.height + "px";
|
|
videoIndicator.src = "icons/photo.svg";
|
|
|
|
div.appendChild(videoIndicator);
|
|
|
|
if (first && this.records.childNodes && this.records.childNodes.length > 0) {
|
|
this.records.insertBefore(div, this.records.firstChild)
|
|
} else {
|
|
this.records.appendChild(div);
|
|
}
|
|
|
|
div.addEventListener("click", function () {
|
|
if (t.popupMode) {
|
|
return;
|
|
}
|
|
t.popupMode = true;
|
|
|
|
var popupDiv = t.generateImagePopup(fullData, img, metadata, div);
|
|
document.body.appendChild(popupDiv);
|
|
});
|
|
},
|
|
|
|
displayVideo: function (fullData, first, metadata) {
|
|
var t = this;
|
|
var div = document.createElement("div");
|
|
div.style.border = "1px solid #000";
|
|
div.style.marginLeft = "5px";
|
|
div.style.marginTop = "5px";
|
|
div.style.width = this.width + "px";
|
|
div.style.height = this.height + "px";
|
|
div.style.display = 'inline-block';
|
|
|
|
|
|
var video = document.createElement("video");
|
|
video.style.width = this.width + "px";
|
|
video.style.height = this.height + "px";
|
|
video.style.float = "left";
|
|
video.zIndex = "98";
|
|
video.style.position = "absolute";
|
|
video.src = fullData.data;
|
|
video.style.display = 'inline-block';
|
|
|
|
div.appendChild(video);
|
|
|
|
var videoIndicator = document.createElement("img");
|
|
videoIndicator.style.display = 'inline-block';
|
|
videoIndicator.style.float = "left";
|
|
videoIndicator.style.position = "absolute";
|
|
videoIndicator.zIndex = "99";
|
|
videoIndicator.style.width = this.width + "px";
|
|
videoIndicator.style.height = this.height + "px";
|
|
videoIndicator.src = "icons/video.svg";
|
|
|
|
div.appendChild(videoIndicator);
|
|
|
|
if (first && this.records.childNodes && this.records.childNodes.length > 0) {
|
|
this.records.insertBefore(div, this.records.firstChild)
|
|
} else {
|
|
this.records.appendChild(div);
|
|
}
|
|
|
|
div.addEventListener("click", function () {
|
|
if (t.popupMode) {
|
|
return;
|
|
}
|
|
t.popupMode = true;
|
|
|
|
var popupDiv = t.generateVideoPopup(fullData, div, metadata);
|
|
document.body.appendChild(popupDiv);
|
|
});
|
|
},
|
|
|
|
displayAudio: function (fullData, first, metadata) {
|
|
var t = this;
|
|
|
|
var div = document.createElement("div");
|
|
|
|
div.style.border = "1px solid #000";
|
|
div.style.marginLeft = "5px";
|
|
div.style.display = 'inline-block';
|
|
div.style.marginTop = "5px";
|
|
div.style.width = this.width + "px";
|
|
div.style.height = this.height + "px";
|
|
div.style.background = "#000";
|
|
|
|
var img = document.createElement("img");
|
|
img.src = "icons/audio.svg";
|
|
img.style.width = this.width + "px";
|
|
img.style.height = this.height + "px";
|
|
img.style.display = 'inline-block';
|
|
|
|
div.appendChild(img);
|
|
|
|
|
|
if (first && this.records.childNodes && this.records.childNodes.length > 0) {
|
|
this.records.insertBefore(div, this.records.firstChild)
|
|
} else {
|
|
this.records.appendChild(div);
|
|
}
|
|
|
|
div.addEventListener("click", function () {
|
|
if (t.popupMode) {
|
|
return;
|
|
}
|
|
t.popupMode = true;
|
|
|
|
var popupDiv = t.generateAudioPopup(fullData, div, metadata);
|
|
document.body.appendChild(popupDiv);
|
|
});
|
|
},
|
|
|
|
displayData: function (data, first) {
|
|
var objectId = data.objectId;
|
|
|
|
var fullData = {id: objectId, data: data.text};
|
|
|
|
if (data.metadata.mimetype.indexOf("audio") === 0) {
|
|
this.displayAudio(fullData, first, data.metadata);
|
|
}
|
|
|
|
if (data.metadata.mimetype.indexOf("video") === 0) {
|
|
this.displayVideo(fullData, first, data.metadata);
|
|
}
|
|
|
|
if (data.metadata.mimetype.indexOf("image") === 0) {
|
|
this.displayImage(fullData, first, data.metadata);
|
|
}
|
|
|
|
},
|
|
|
|
getData: function (ids, callback) {
|
|
var allData = datastore.find();
|
|
var toload = [];
|
|
var medias = [];
|
|
for (var i = 0; i < allData.length; i++) {
|
|
var d = allData[i];
|
|
|
|
if (!d.metadata || !d.metadata.mimetype || ids.indexOf(d.objectId) < 0) {
|
|
continue;
|
|
}
|
|
|
|
var mimetype = d.metadata.mimetype;
|
|
if (mimetype.indexOf("audio") !== 0 && mimetype.indexOf("video") !== 0 && mimetype.indexOf("image") !== 0) {
|
|
continue;
|
|
}
|
|
toload.push(d.objectId);
|
|
}
|
|
var remain = toload.length;
|
|
for (var i = 0 ; i < toload.length ; i++) {
|
|
var dsObject = new datastore.DatastoreObject(toload[i]);
|
|
dsObject.loadAsText(function(err, metadata, text) {
|
|
medias.push({metadata: metadata, text: text});
|
|
if (callback && --remain == 0) {
|
|
callback(medias.reverse());
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
helper: undefined,
|
|
|
|
getMimetypeWithData: function (data) {
|
|
return data.split(";")[0].split(":")[1];
|
|
},
|
|
|
|
insertData: function (inputData, callback) {
|
|
var mimetype = this.getMimetypeWithData(inputData);
|
|
var type = mimetype.split("/")[0];
|
|
var metadata = {
|
|
mimetype: mimetype,
|
|
title: type.charAt(0).toUpperCase() + type.slice(1) + " " + captureHelper.by + " " + captureHelper.buddy_name.charAt(0).toUpperCase() + captureHelper.buddy_name.slice(1),
|
|
activity: "org.olpcfrance.MediaViewerActivity",
|
|
timestamp: new Date().getTime(),
|
|
creation_time: new Date().getTime(),
|
|
file_size: 0
|
|
};
|
|
|
|
datastore.create(metadata, callback, inputData);
|
|
},
|
|
|
|
isCordova: function () {
|
|
if (window.cordova || window.PhoneGap) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
},
|
|
|
|
init: function () {
|
|
var t = this;
|
|
var itemNumber = document.body.clientWidth / 160;
|
|
this.width = document.body.clientWidth / itemNumber - 10;
|
|
this.height = 240 * this.width / 320;
|
|
this.records = document.getElementById("records");
|
|
|
|
if (this.isCordova()) {
|
|
this.helper = cordovaHelper;
|
|
} else {
|
|
this.helper = html5Helper;
|
|
this.helper.timerStart = document.getElementById("timer-start");
|
|
this.helper.timerEnd = document.getElementById("timer-end");
|
|
|
|
this.loadingStop = document.getElementById("loading-stop");
|
|
this.loadingStop.addEventListener("click", function () {
|
|
if (html5Helper.currentRecording && html5Helper.currentRecording.maxTime) {
|
|
html5Helper.currentRecording.time = html5Helper.currentRecording.maxTime;
|
|
}
|
|
});
|
|
}
|
|
this.helper.init();
|
|
}
|
|
};
|
|
|
|
var html5Helper = {
|
|
recording: false,
|
|
currentRecording: {},
|
|
recordAudio: function () {
|
|
if (this.recording) {
|
|
return;
|
|
}
|
|
this.recording = true;
|
|
var t = this;
|
|
|
|
document.getElementById("loading-stop").style.display = "block";
|
|
t.timerStart.style.display = "inline-block";
|
|
t.timerEnd.style.display = "inline-block";
|
|
document.getElementById("loading-progress").style.display = "inline-block";
|
|
|
|
captureHelper.displayLoading();
|
|
try {
|
|
navigator.mediaDevices.getUserMedia({audio: true}).then(function (mediaStream) {
|
|
var recordRTC = RecordRTC(mediaStream, {
|
|
type: 'audio'
|
|
});
|
|
|
|
recordRTC.startRecording();
|
|
var maxTime = 5;
|
|
t.currentRecording.time = 0;
|
|
var p = document.getElementById("loading-progress");
|
|
t.currentRecording.maxTime = maxTime;
|
|
p.setAttribute("max", maxTime.toString());
|
|
t.timerEnd.innerHTML = maxTime.toString() + "s";
|
|
t.timerStart.innerHTML = "0s";
|
|
|
|
t.currentRecording.interval = setInterval(function () {
|
|
t.currentRecording.time++;
|
|
p = document.getElementById("loading-progress");
|
|
p.value = t.currentRecording.time;
|
|
if (t.currentRecording.time <= maxTime) {
|
|
t.timerStart.innerHTML = t.currentRecording.time + "s";
|
|
}
|
|
if (t.currentRecording.time > t.currentRecording.maxTime) {
|
|
t.timerStart.innerHTML = "";
|
|
t.timerEnd.innerHTML = "";
|
|
document.getElementById("loading-progress").value = 0;
|
|
clearInterval(t.currentRecording.interval);
|
|
recordRTC.stopRecording(function () {
|
|
recordRTC.getDataURL(function (dataURL) {
|
|
setTimeout(function () {
|
|
captureHelper.forgeAndInsertData(dataURL);
|
|
if (mediaStream.stop) mediaStream.stop();
|
|
t.recording = false;
|
|
captureHelper.hideLoading();
|
|
}, 500);
|
|
}, false);
|
|
});
|
|
}
|
|
}, 1000);
|
|
|
|
}).catch(function (error) {
|
|
t.recording = false;
|
|
captureHelper.hideLoading();
|
|
});
|
|
} catch (e) {
|
|
t.recording = false;
|
|
captureHelper.hideLoading();
|
|
}
|
|
},
|
|
|
|
recordVideo: function () {
|
|
if (this.recording) {
|
|
return;
|
|
}
|
|
|
|
this.recording = true;
|
|
var t = this;
|
|
|
|
document.getElementById("loading-stop").style.display = "block";
|
|
t.timerStart.style.display = "inline-block";
|
|
t.timerEnd.style.display = "inline-block";
|
|
document.getElementById("loading-progress").style.display = "inline-block";
|
|
|
|
captureHelper.displayLoading();
|
|
try {
|
|
navigator.mediaDevices.getUserMedia({video: true}).then(function (mediaStream) {
|
|
var recordRTC = RecordRTC(mediaStream, {
|
|
type: 'video',
|
|
frameRate: 80,
|
|
quality: 0
|
|
});
|
|
|
|
document.querySelector('#vidDisplay').srcObject = mediaStream;
|
|
recordRTC.startRecording();
|
|
var maxTime = 5;
|
|
t.currentRecording.time = 0;
|
|
var p = document.getElementById("loading-progress");
|
|
t.currentRecording.maxTime = maxTime;
|
|
t.timerEnd.innerHTML = maxTime.toString() + "s";
|
|
p.setAttribute("max", maxTime.toString());
|
|
t.timerStart.innerHTML = "0s";
|
|
|
|
t.currentRecording.interval = setInterval(function () {
|
|
t.currentRecording.time++;
|
|
p = document.getElementById("loading-progress");
|
|
p.value = t.currentRecording.time;
|
|
if (t.currentRecording.time <= maxTime) {
|
|
t.timerStart.innerHTML = t.currentRecording.time + "s";
|
|
}
|
|
if (t.currentRecording.time > t.currentRecording.maxTime) {
|
|
t.timerStart.innerHTML = "";
|
|
t.timerEnd.innerHTML = "";
|
|
document.getElementById("loading-progress").value = 0;
|
|
clearInterval(t.currentRecording.interval);
|
|
recordRTC.stopRecording(function () {
|
|
recordRTC.getDataURL(function (dataURL) {
|
|
setTimeout(function () {
|
|
captureHelper.forgeAndInsertData(dataURL);
|
|
if (mediaStream.stop) mediaStream.stop();
|
|
t.recording = false;
|
|
captureHelper.hideLoading();
|
|
}, 500);
|
|
}, false);
|
|
});
|
|
}
|
|
}, 1000);
|
|
|
|
}).catch(function (error) {
|
|
t.recording = false;
|
|
captureHelper.hideLoading();
|
|
});
|
|
} catch (e) {
|
|
t.recording = false;
|
|
captureHelper.hideLoading();
|
|
}
|
|
},
|
|
|
|
takePicture: function () {
|
|
if (this.recording) {
|
|
return;
|
|
}
|
|
this.recording = true;
|
|
var t = this;
|
|
|
|
t.timerStart.style.display = "none";
|
|
t.timerEnd.style.display = "none";
|
|
document.getElementById("loading-stop").style.display = "none";
|
|
document.getElementById("loading-progress").style.display = "none";
|
|
|
|
var video = document.createElement("video");
|
|
try {
|
|
captureHelper.displayLoading();
|
|
navigator.mediaDevices.getUserMedia({video: true}).then(function (mediaStream) {
|
|
document.querySelector('#vidDisplay').srcObject = mediaStream;
|
|
setTimeout(function () {
|
|
var canvas = document.createElement("canvas");
|
|
var width = captureHelper.width;
|
|
var height = captureHelper.height;
|
|
|
|
canvas.width = width;
|
|
canvas.height = height;
|
|
|
|
canvas.getContext('2d').drawImage(document.querySelector('#vidDisplay'), 0, 0, width, height);
|
|
var imgSrc = canvas.toDataURL("image/png");
|
|
captureHelper.forgeAndInsertData(imgSrc);
|
|
if (mediaStream.stop) mediaStream.stop();
|
|
t.recording = false;
|
|
captureHelper.hideLoading();
|
|
}, 2700);
|
|
}).catch(function (error) {
|
|
t.recording = false;
|
|
captureHelper.hideLoading();
|
|
});
|
|
} catch (e) {
|
|
t.recording = false;
|
|
captureHelper.hideLoading();
|
|
}
|
|
},
|
|
|
|
init: function () {
|
|
}
|
|
|
|
};
|
|
|
|
var cordovaHelper = {
|
|
|
|
cordovaLoaded: false,
|
|
fileSystem: null,
|
|
|
|
takePicture: function () {
|
|
var captureSuccess = function (imageData) {
|
|
var data = "data:image/jpeg;base64," + imageData;
|
|
captureHelper.forgeAndInsertData(data);
|
|
}
|
|
|
|
// capture error callback
|
|
var captureError = function (error) {
|
|
};
|
|
|
|
// start image capture
|
|
navigator.camera.getPicture(captureSuccess, captureError, {
|
|
quality: 50,
|
|
targetWidth: 640,
|
|
targetHeight: 480,
|
|
destinationType: Camera.DestinationType.DATA_URL,
|
|
sourceType: Camera.PictureSourceType.CAMERA
|
|
});
|
|
},
|
|
|
|
recordAudio: function () {
|
|
var captureSuccess = function (mediaFiles) {
|
|
var i, path, len;
|
|
for (i = 0, len = mediaFiles.length; i < len; i += 1) {
|
|
path = mediaFiles[i].fullPath;
|
|
if (path.indexOf("file:/") == -1) {
|
|
path = "file:/" + path;
|
|
}
|
|
path = path.replace("file:/", "file:///");
|
|
|
|
window.resolveLocalFileSystemURI(path, function (entry) {
|
|
entry.file(function (file) {
|
|
if (file.size / 1000000 > 2) {
|
|
displayAlertMessage("File is too big");
|
|
return;
|
|
}
|
|
var reader = new FileReader();
|
|
reader.onloadend = function (evt) {
|
|
captureHelper.forgeAndInsertData(evt.target.result);
|
|
};
|
|
reader.readAsDataURL(file);
|
|
}, function (err) {
|
|
})
|
|
}, function (err) {
|
|
});
|
|
}
|
|
};
|
|
|
|
// capture error callback
|
|
var captureError = function (error) {
|
|
};
|
|
|
|
// start image capture
|
|
try {
|
|
navigator.device.capture.captureAudio(captureSuccess, captureError, {
|
|
limit: 1
|
|
});
|
|
} catch(err)
|
|
{
|
|
}
|
|
},
|
|
|
|
recordVideo: function () {
|
|
var captureSuccess = function (mediaFiles) {
|
|
var i, path, len;
|
|
for (i = 0, len = mediaFiles.length; i < len; i += 1) {
|
|
path = mediaFiles[i].fullPath;
|
|
if (path.indexOf("file:/") == -1) {
|
|
path = "file:/" + path;
|
|
}
|
|
path = path.replace("file:/", "file:///");
|
|
|
|
window.resolveLocalFileSystemURI(path, function (entry) {
|
|
entry.file(function (file) {
|
|
if (file.size / 1000000 > 2) {
|
|
displayAlertMessage("File is too big");
|
|
return;
|
|
}
|
|
var reader = new FileReader();
|
|
reader.onloadend = function (evt) {
|
|
captureHelper.forgeAndInsertData(evt.target.result);
|
|
};
|
|
reader.readAsDataURL(file);
|
|
}, function (err) {
|
|
})
|
|
}, function (err) {
|
|
});
|
|
}
|
|
};
|
|
|
|
// capture error callback
|
|
var captureError = function (error) {
|
|
};
|
|
|
|
// start image capture
|
|
try {
|
|
navigator.device.capture.captureVideo(captureSuccess, captureError, {
|
|
limit: 1,
|
|
quality: 0,
|
|
duration: 15,
|
|
width: captureHelper.width,
|
|
height: captureHelper.height
|
|
});
|
|
} catch(err)
|
|
{
|
|
}
|
|
},
|
|
|
|
onDeviceReady: function () {
|
|
var t = captureHelper.helper;
|
|
t.cordovaLoaded = true;
|
|
},
|
|
|
|
init: function () {
|
|
document.addEventListener("deviceready", this.onDeviceReady, false);
|
|
}
|
|
};
|
|
|
|
return captureHelper;
|
|
});
|