我创建了一个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
。因此,文件夹位置无法移动该图像(我认为这是真正的问题)。
答案 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卡而无需编写任何额外的代码。