在Worklight应用程序中将图像保存到SD卡

时间:2013-05-03 13:54:26

标签: android cordova ibm-mobilefirst

我创建了一个Worklight应用程序,并在其中添加了Android环境。此应用程序有一个使用设备相机拍照的按钮,以及HTML中的img标签,用于显示拍摄的照片。

我遵循了PhoneGap Camera API

现在我正在尝试将该图像存储到SD卡中,但未能这样做。我的

编辑:我改变了我的代码如下:

function takeimage() {
// Retrieve image file location from specified source
navigator.camera.getPicture(getImageURI, function(message) {
alert('Image Capture Failed');
}, {
quality : 40,
destinationType : Camera.DestinationType.FILE_URI
});
}
function getImageURI(imageURI) {

var gotFileEntry = function(fileEntry) { 
    var img=document.getElementById("thisImage");
    img.style.visiblity="visible";
    img.style.display="block";
    img.src=imageURI;
        alert("got image file entry: " + fileEntry.fullPath); 
        var gotFileSystem = function(fileSystem){ 
            // copy the file 
            fileEntry.moveTo(fileSystem.root, "pic.jpg", null, null); 
       }; 
        // 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 
function fsFail(error) { 
    alert("failed with error code: " + error.code); 
}

moveTo方法外,一切正常(捕获应用缓存文件夹中的图像和图像)。 fileEntry.moveTo(fileSystem.root, "pic.jpg", null, null); 我将fileSystem.root置于警戒状态,我正在Object object。因此,文件夹位置无法移动该图像(我认为这是真正的问题)。

2 个答案:

答案 0 :(得分:0)

事实上,这与Worklight无关。

由于您已经使用Apache Cordova访问设备的相机以拍摄照片,因此您还应该使用它将图像文件存储到设备的SD卡中。

以下是一些SO问题,可以为您指出正确的解决方案:

注意#1:您的PhoneGap Camera API链接指向v1.0。 Worklight 5.0.6.x使用PhoneGap 2.3.0,因此请务必use the correct API version

注意#2:通过在android.manifest文件中添加以下行,确保您已添加写入SD卡的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

注意#3:如果上述情况#2不够,请尝试获取SD卡位置:

File sdDir = Environment.getExternalStorageDirectory();

答案 1 :(得分:0)

在takePicture回调中使用此选项

{ 
  saveToPhotoAlbum: true
};

根据您的要求,也可以使用所有其他选项。这会将您的图像保存到photolibrary。

saveToPhotoAlbum:捕获后将图像保存到设备上的相册中。 (布尔型)

它会将您的图像保存到SD卡而无需编写任何额外的代码。