blob: 0f9854956d6b05e37805226ec0fea99296566d40 [file] [log] [blame]
var deviceReady = false;
var platformId = cordova.require('cordova/platform').id;
var pageStartTime = +new Date();
//-------------------------------------------------------------------------
// Camera
//-------------------------------------------------------------------------
function log(value) {
console.log(value);
document.getElementById('camera_status').textContent += (new Date() - pageStartTime) / 1000 + ': ' + value + '\n';
}
function captureAudioWin(mediaFiles){
var path = mediaFiles[0].fullPath;
log('Audio captured: ' + path);
var m = new Media(path);
m.play();
}
function captureAudioFail(e){
log('Error getting audio: ' + e.code);
}
function getAudio(){
clearStatus();
var options = { limit: 1, duration: 10};
navigator.device.capture.captureAudio(captureAudioWin, captureAudioFail, options);
}
function captureImageWin(mediaFiles){
var path = mediaFiles[0].fullPath;
log('Image captured: ' + path);
document.getElementById('camera_image').src = path;
}
function captureImageFail(e){
log('Error getting image: ' + e.code);
}
function getImage(){
clearStatus();
var options = { limit: 1 };
navigator.device.capture.captureImage(captureImageWin, captureImageFail, options);
}
function captureVideoWin(mediaFiles){
var path = mediaFiles[0].fullPath;
log('Video captured: ' + path);
// need to inject the video element into the html
// doesn't seem to work if you have a pre-existing video element and
// add in a source tag
var vid = document.createElement('video');
vid.id="theVideo";
vid.width = "320";
vid.height= "240";
vid.controls = "true";
var source_vid = document.createElement('source');
source_vid.id = "theSource";
source_vid.src = path;
vid.appendChild(source_vid);
document.getElementById('video_container').appendChild(vid);
}
function captureVideoFail(e){
log('Error getting video: ' + e.code);
}
function getVideo(){
clearStatus();
var options = { limit: 1, duration: 10 };
navigator.device.capture.captureVideo(captureVideoWin, captureVideoFail, options);
}
function resolveMediaFileURL(mediaFile, callback) {
resolveLocalFileSystemURL(mediaFile.localURL, function(entry) {
log("Resolved by URL: " + mediaFile.localURL);
if (callback) callback();
}, function(err) {
log("Failed to resolve by URL: " + mediaFile.localURL);
log("Error: " + JSON.stringify(err));
if (callback) callback();
});
}
function resolveMediaFile(mediaFile, callback) {
resolveLocalFileSystemURL(mediaFile.fullPath, function(entry) {
log("Resolved by path: " + mediaFile.fullPath);
if (callback) callback();
}, function(err) {
log("Failed to resolve by path: " + mediaFile.fullPath);
log("Error: " + JSON.stringify(err));
if (callback) callback();
});
}
function resolveVideo() {
clearStatus();
var options = { limit: 1, duration: 5 };
navigator.device.capture.captureVideo(function(mediaFiles) {
captureVideoWin(mediaFiles);
resolveMediaFile(mediaFiles[0], function() {
resolveMediaFileURL(mediaFiles[0]);
});
}, captureVideoFail, options);
}
function clearStatus() {
document.getElementById('camera_status').innerHTML = '';
document.getElementById('camera_image').src = 'about:blank';
}
/**
* Function called when page has finished loading.
*/
function init() {
document.addEventListener("deviceready", function() {
deviceReady = true;
console.log("Device="+device.platform+" "+device.version);
}, false);
window.setTimeout(function() {
if (!deviceReady) {
alert("Error: Apache Cordova did not initialize. Demo will not run correctly.");
}
},1000);
};
window.onload = function() {
addListenerToClass('getAudio', getAudio);
addListenerToClass('getImage', getImage);
addListenerToClass('getVideo', getVideo);
addListenerToClass('resolveVideo', resolveVideo);
addListenerToClass('backBtn', backHome);
init();
}