【问题标题】:Recover camera captured image after app was restarted (by the camera itself)重新启动应用程序后恢复相机捕获的图像(由相机本身)
【发布时间】:2016-07-22 16:46:48
【问题描述】:

我在使用 Android 的 Ionic 上遇到了一个非常常见的问题(在 Cordova/PhoneGap 中也很常见),在低内存设备上,当您调用相机获取图片(或任何媒体意图)时,您的应用程序会运行背景并且经常被垃圾收集器关闭,然后在拍照后重新启动。 这是我用来调用相机的代码,带有 ngCordova 相机插件:

var options = {
   quality: 75,
   destinationType: Camera.DestinationType.FILE_URI,
   //destinationType: Camera.DestinationType.DATA_URL,
   sourceType: Camera.PictureSourceType.CAMERA,
   allowEdit: true,
   encodingType: Camera.EncodingType.JPEG,
   targetWidth: 200,
   targetHeight: 200,
   popoverOptions: CameraPopoverOptions,
   saveToPhotoAlbum: false
};

// This causes the app to go background
$cordovaCamera.getPicture(options).then(function (imageData) {
    // do something with the picture
}, function (err) {
    // do something with the error
});

我进行了广泛搜索,似乎只有 2 个可能的解决方案:

  • 实现您自己的应用内摄像头,让您的应用永不消失 背景。
  • 保存您的应用程序状态并在获取后恢复它 图片。

出于多种原因,我打算稍后进行,保存和恢复我的应用程序状态,这当然包括检索相机正在返回的图片数据。经过长时间的上下文描述,这是我的实际问题:

如何检索相机返回到我的应用程序的 imageData?

我可能缺乏一些基本的 Android 知识,但我相信相机应用正在向我的应用返回一个 Intent,所以我尝试使用这个 WebIntent 插件恢复它,但完全没有成功。

【问题讨论】:

    标签: cordova ionic-framework camera


    【解决方案1】:

    问题解决了,如果有人遇到同样的问题,这是我在 app.run 方法中添加的:

      document.addEventListener('resume', function(evt) {
          if(evt.action === 'resume' && evt.pendingResult) {
    
                var r = evt.pendingResult;
                if(r.pluginServiceName === 'Camera' && r.pluginStatus === 'OK') {
                    var restoredImageData = r.result;
                }
          }
        }, false);
    

    【讨论】:

    • 您好,我遇到了与您完全相同的问题,但是此解决方案对我不起作用。我的 web 视图正在重新创建,并且我收到了一个恢复事件调用,但是我的 evt 数据从未包含一个pendingResult。所以我无法从相机中检索任何图像数据。我在 logcat 中没有看到任何错误,而且我的 android 5 设备有足够的内存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    相关资源
    最近更新 更多