0

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

我跟着这个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); 
}

除方法外,一切正常(捕获应用程序缓存文件夹中可用的图像和图像)moveTofileEntry.moveTo(fileSystem.root, "pic.jpg", null, null); 我发出fileSystem.root警报,我得到了Object object。所以文件夹位置不可用于移动该图像(我认为这是真正的问题)。

4

2 回答 2

0

事实上,这与 Worklight 无关。

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

这里有几个 SO 问题可以为您指出正确的解决方案:

注意 #1:您指向 PhoneGap Camera API 的链接指向 v1.0。Worklight 5.0.6.x 使用 PhoneGap 2.3.0,因此请务必使用正确的 API 版本

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

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

注意#3:如果上面的#2不够,请尝试像这样获取SD卡位置:

File sdDir = Environment.getExternalStorageDirectory();
于 2013-05-03T15:00:48.130 回答
0

在你的 takePicture 回调中使用这个选项

{ 
  saveToPhotoAlbum: true
};

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

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

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

于 2013-08-22T19:06:12.333 回答