我正在使用Titanium sdk的openCamera函数来捕获图像并将其存储到SD卡中。
function captureImage() {
var capturedImg;
Titanium.Media.showCamera({
success : function(event) {
/* Holds the captured image */
capturedImg = event.media;
/* Condition to check the selected media */
if (event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO) {
var window1 = Project.AddDocumentSaveView.init(capturedImg, docImgModel);
window1.oldWindow = win;
Project.UI.Common.CommonViews.addWindowToTabGroup(window1);
activityInd.hide();
}
},
cancel : function() {
},
error : function(error) {
/* called when there's an error */
var a = Titanium.UI.createAlertDialog({
titleid : Project.StringConstant.IMP_DOCS_CAMERA
});
if (error.code == Titanium.Media.NO_CAMERA) {
a.setMessage(Project.StringConstant.IMP_DOCS_ERROR_WITH_CAMERA);
} else {
a.setMessage(Project.StringConstant.UNEXPECTED_ERROR + error.message);
}
a.show();
}
});
}
它在iphone甚至三星galaxy s2中运行良好。但在一台设备上,摩托罗拉Milestone设备,应用程序在捕获后接受图片时崩溃。
以下是设备连接时的日志:Log for camera crash
我尝试了很多次但却找不到问题。我认为它有一些记忆问题,但我不确定。
有人可以调查并帮我找出问题所在。
任何帮助/建议都将受到赞赏。
由于
答案 0 :(得分:0)
此相框中的所有内容都应在相机关闭后完成
if (event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO) {
}
相机占用大量内存,你正在打开新窗户并做一堆其他的东西......不太好。
答案 1 :(得分:0)
这是Titanium上的老化问题(TIMOB-12848
在某些设备上,原生相机应用程序(Titanium使用Intent调用它)会导致Android破坏我们的应用程序。 当它尝试重新启动它时,没有恢复先前的状态,因此不会调用意图回调。
我找到了一个简单的解决方法来最小化这个问题,但是没有解决它。它只是"掩盖"不知何故。
上一个链接中讨论了解决方法,完整的示例代码为here