【问题标题】:Camera in phonegap app. restarting the appphonegap 应用程序中的相机。重新启动应用程序
【发布时间】:2013-11-02 23:13:12
【问题描述】:

我正在开发 phonegap 应用程序。并在其中使用相机。几天前它还在工作。最近几天我做了很多更改,现在相机无法正常工作。它打开相机但是当我拍照时,然后从相机应用程序。当我按 OK 时,它会重新启动应用程序。

我不明白它是如何做到的。我实际上无法理解它是否可以从我的 phonegap 应用程序重新启动。 JS 代码或只能从 android Java 代码重新启动。

我正在将此代码用于相机:

function takePhoto() {
navigator.camera.getPicture(onCameraPicSuccess, onCameraPicFail, {quality: 50,
    destinationType: Camera.DestinationType.FILE_URI
});

function onCameraPicSuccess(imageURI) {
    alert("coming here in pic success");
    var img = '<div style="padding:4px; margin:10px;  border: solid 2px #666;float: left; width:30%"><img src="' + imageURI + '" width="100%" /></div>';
    $('#images_area').append(img);
 }

function onCameraPicFail(message) {
    alert('Failed because: ' + message);
}

所以任何想法,这就是为什么应用程序。将在使用相机应用程序时重新启动。通过上面的代码?我的 JS 代码没有启动画面,但我的 Java 代码有。所以按下相机的OK按钮后,我可以看到应用程序。重新启动,back button 绑定和menu button 绑定暂时不工作。

所以不确定发生了什么。如果你们有任何这样的经验或任何想法,请随时分享。

如果还有什么我需要说的。然后告诉我。


在 stackoverflow.com 上进行了更多搜索后,我才知道问题出在 android 上,因为 android 杀死了该应用程序。如果内存较少,则在后台。所以需要释放内存等。但我注意到,当我使用 JQuery Mobile Forms 时,应用程序运行良好。但是在我将其更改为自定义后,出现了这个相机问题。因此,如果这是与内存相关的问题,那么为什么会在删除 jquery 移动表单和进行自定义工作时发生。事实上,现在的应用程序与自定义工作更加顺畅。所以我很困惑是内存相关问题还是其他问题?以及如何处理这种类型的应用程序。在phonegap中开发。

【问题讨论】:

    标签: javascript android cordova camera


    【解决方案1】:

    phonegap 相机 API 在您使用时调用相机应用程序

    navigator.camera.getPicture
    

    请在此处阅读 - http://docs.phonegap.com/en/edge/cordova_camera_camera.md.html#Camera

    这会将您的应用程序推入后台,如果内存不足,可能会导致您的应用程序被终止。

    如果您不希望您的应用程序在摄像头启动时进入后台,您需要使用前景摄像头插件。看看吧here

    您可能需要更改它以满足您的要求。

    【讨论】:

    • 但那样我可能也需要 iOS 插件?
    • +1 向我展示了另一种方式,但还无法测试,所以我会在尝试后告诉你
    • 无法运行此插件,按照项目页面中的说明将其包含到项目中后,无法编译和构建
    • 说重复类ForegroundCameraPreview,是因为已经安装了cordova相机插件吗?
    • 我正在使用phonegap 2.9 + foregroundcameraplugin,当进入相机时预览是黑屏,点击'Capture'用NullPointerException(CameraActivity.java:77)杀死应用程序
    【解决方案2】:

    这可能是与内存相关的问题。您可以通过在应用程序清单文件中设置 android:largeHeap="true" 来增加应用程序的堆大小。

    【讨论】:

    • 没有区别,在使用相机时,同样的问题,重新启动应用程序。拍摄图像后按 OK 按钮。
    【解决方案3】:

    您不需要创建一个完整的自定义前景摄像头,您只需向积极的垃圾收集器指定您想要检索旧意图而不是启动新实例。尝试在相机插件中为保存的意图设置一个标志:

    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    

    在这里查看我的帖子:https://stackoverflow.com/a/29630548/2782404

    此外,增加堆大小和使用 singleTask/singleInstance 对我不起作用

    【讨论】:

      【解决方案4】:

      在 android 清单文件中将活动的启动模式设置为“singleTask”或 “单一实例”。
      可能是您的应用程序多次启动活动。

      【讨论】:

      • 尝试了 singleTask 和 singleInstance 但没有得到解决方案
      【解决方案5】:

      看到这个链接,它解释说这实际上与phonegap无关,而是与android的活动有关。他建议使用一个名为 Foreground Camera Plugin 的插件。

      PhoneGap camera restarts the application

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多