我在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
});
我搜索的范围很广,似乎只有两个可行的解决方案:
由于种种原因,我会选择保存和恢复我的应用状态,这当然包括检索相机返回的图片数据。在这个长期的背景解释之后,这是我的实际问题:
如何检索相机返回我的应用的imageData?
我可能缺乏一些基本的Android知识,但我相信Camera应用程序正在将Intent返回到我的应用程序,因此我尝试使用此WebIntent插件恢复它,但根本没有成功。
答案 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);