2014-12-04 5 views
1

В моей Кордову (v3.3) приложение одной страницы используйте следующий код, чтобы получить изображение с камерыnavigator.camera.getPicture не работает должным образом

function takeSkiImage(){ 
    capturePhoto(); 
} 

function capturePhoto() { 
// Take picture using device camera and retrieve image as base64-encoded string 
    alert((navigator.camera.getPicture)); 
    navigator.camera.cleanup(); 
    navigator.camera.getPicture(onPhotoDataSuccess, function fail(error){ 
     alert("failed : " + error.code); 
    }, { 
     quality : 90, 
     targetWidth : 2300, 
     targetHeight : 1800, 
     destinationType : Camera.DestinationType.FILE_URI 
    }); 
} 


function onPhotoDataSuccess(imageURI) { 
    var gotFileEntry = function(fileEntry) { 
    alert("got image file entry: " + fileEntry.fullPath); 
    var gotFileSystem = function(fileSystem) { 

     fileSystem.root.getDirectory("sample", { 
      create : true 
     }, function(dataDir) { 
      var d = new Date(); 
      var n = d.getTime(); 
      var newFileName = n + ".jpg"; 
      alert("File Downloaded"); 
      // copy the file 
      fileEntry.moveTo(dataDir, newFileName, null, fsFail); 

     }, dirFail); 

    }; 
    // get file system to copy or move image file to 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
      gotFileSystem, fsFail); 
}; 
// resolve file system for image 
window.resolveLocalFileSystemURI(imageURI, gotFileEntry, fsFail); 

// file system fail 
var fsFail = function(error) { 
    alert("failed with error code: " + error.code); 

}; 

var dirFail = function(error) { 
    alert("Directory error code: " + error.code); 

}; 
} 

Приведенный выше код работает отлично в NEXUS 7 (v 4.2 устройство) и оповещает камера начинают но в вкладки Самсунгом 4 (v 4.4) устройства оповещения запуск камеры никогда не срабатывает первый раз но goes to camera and able to take picture but not able to save.

когда снова принять новое изображение в то время только старое изображение откладывается , как мудрый взять новое изображение только предыдущее изображение. Как это решить. Любая помощь очень заметна.

+0

Вы можете попробовать с Camera.DestinationType.DATA_URL и посмотреть результаты на обоих устройствах? – AAhad

+0

@AAhad попробовал такое же поведение .. – Vini

+0

Хм, прежде чем пытаться открыть камеру, вызовите это, чтобы очистить кеш. navigator.camera.cleanup(); он может помочь – AAhad

ответ

0

Для того, чтобы сохранить изображение, нужно правильно настроить параметры.

function takeSkiImage(){ 
    alert("hi"); 
    navigator.camera.getPicture(function(imageData) { 
     alert("camera start"); 
    }, onFail, { 
    quality : 100, allowEdit : true, 
    targetWidth: 2350, 
    targetHeight: 1800, 
    destinationType : Camera.DestinationType.FILE_URI, 
    saveToPhotoAlbum : true 
    }); 
} 

saveToPhotoAlbum : true требуется сохранить изображения.

Update:

Чтобы сохранить файл в другом месте, вы должны использовать File plugin.

+0

не в фотоальбоме мой пользовательский каталог .. – Vini

+0

Тогда вам нужно использовать другой плагин для файлов – AAhad

+0

. Я использую как этот 'window.resolveLocalFileSystemURI (imageURI, gotFileEntry, fsFail);' но проблема в том, что он никогда не выходит внутрь getPicture – Vini

Смежные вопросы