应用程序重启后恢复相机捕获的图像(由相机本身)

时间:2016-07-22 16:46:48

标签: cordova ionic-framework camera

我在Ionic与Android上有一个相当普遍的问题(它在Cordova / PhoneGap中很常见),在低ram设备上,当你打电话给相机拍照(或任何媒体意图)实际上,你的应用程序变为后台并经常由垃圾收集器关闭,然后在拍摄照片后重新启动。 这是我使用ngCordova Camera插件调用相机的代码:

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
});

我搜索的范围很广,似乎只有两个可行的解决方案:

  • 实施您自己的inApp相机,因此您的应用永远不会去 背景
  • 保存您的应用状态并在恢复后恢复 图片。

由于种种原因,我会选择保存和恢复我的应用状态,这当然包括检索相机返回的图片数据。在这个长期的背景解释之后,这是我的实际问题:

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

我可能缺乏一些基本的Android知识,但我相信Camera应用程序正在将Intent返回到我的应用程序,因此我尝试使用此WebIntent插件恢复它,但根本没有成功。

1 个答案:

答案 0 :(得分:0)

问题解决了,如果有人遇到同样的问题,这就是我在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);