PhoneGap 的 getPicture() 调用不会保存到 Android 手机上的图库

Posted

技术标签:

【中文标题】PhoneGap 的 getPicture() 调用不会保存到 Android 手机上的图库【英文标题】:PhoneGap's getPicture() call does not save to the Gallery on Android Phone 【发布时间】:2013-06-24 19:42:31 【问题描述】:

我一直在尝试使用 PhoneGap 功能用我的 android 手机拍照并将其保存到手机的图库中。我没有任何问题让他们的完整示例项目启动并运行,但代码永远不会保存图像。我们在 Iphone 上进行了测试,没有任何问题,所以我想知道是我做错了什么还是这是另一个 Android 问题。

Phone Gap Example

以下是我根据我在网上看到的情况采取的步骤。

添加到 app/res/xml/config.xml 文件中
<plugin name="Camera" value="org.apache.cordova.CameraLauncher" />
添加到清单文件
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
更改 getPicture() 中的选项以包含“saveToPhotoAlbum”选项
navigator.camera.getPicture(onPhotoDataSuccess, onFail,  quality: 50,
    destinationType: destinationType.DATA_URL, saveToPhotoAlbum: true );

我也尝试将目标类型更改为 FILE_URI,但仍然没有成功。该应用程序仍然可以显示捕获的图像,所以我知道它已经到了那么远,我只是不知道为什么它没有保存到图库中。

【问题讨论】:

我不再熟悉 phonegap,但 phonegap 尝试用来创建图像的路径可能不存在,或者在创建图像期间可能无法访问该文件路径,所以图像数据被保存到一个位图中,该位图被放在屏幕上,但是当 phonegap 试图将图像保存到文件时它失败了。您可能想编写自己的本地方法来保存图像。我不知道在没有sdcard之类的情况下phonegap方法是否会自动保存到appdata,所以你自己的native方法可能是最好的方法。 你试过this吗?我试过了,它没有任何问题。将 movePic() 函数放在成功处理程序的末尾 - onPhotoDataSuccess()。将FILE_URI 作为参数传递给movePic(FILE_URI) 函数调用。看看它是否适合你。 【参考方案1】:

我一直被同样的问题困住,但使用的是 jquery mobile。我还复制了 apache cordova 相机插件的工作示例。我只是在他们提供的 .js 文件中注释了整个代码,然后粘贴了从堆栈溢出复制的以下代码。它工作得非常好,但有一个问题是图像将保存在底部,日期为 1970 年,但它被保存了。代码如下。

$('#capturePhotoButton').on('click', function () 
    alert('capturePhotoButton click() called');
    cameraGetPicture();

            );

function cameraGetPicture() 
    navigator.camera.getPicture(imageReceived, cameraFail, 
        quality: 50,
        destinationType: Camera.DestinationType.FILE_URI,
        allowEdit: false,
        saveToPhotoAlbum: true,
        correctOrientation: true        

    );


function imageReceived(imageURI) 
    var image = document.querySelector('img#smallImage');
    image.src = imageURI;
    imageURI = new steroids.File(
        path: "image.png",
        relativeTo: steroids.app.userFilesPath

    );


function cameraFail(message) 
    alert("Camera error: " + message);

【讨论】:

如果您有不同的问题而不是问题的答案,请考虑发布一个新问题。

以上是关于PhoneGap 的 getPicture() 调用不会保存到 Android 手机上的图库的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap navigator.camera.getPicture 不触发回调

我如何从PhoneGap camera.getPicture获取File对象?

PhoneGap 的 getPicture() 调用不会保存到 Android 手机上的图库

PhoneGap 2.3:Cordova 拍照 API (camera.getPicture) API 返回 onDestory

PhoneGap 摄像头重启应用

相机在phonegap中不起作用