2

我正在使用 Titanium sdk 的 openCamera 函数来捕获图像并将其存储到 sdcard。

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中都能正常工作。但是在一个设备上,摩托罗拉里程碑设备,当捕获后接受图片时,应用程序崩溃。

这是连接设备时的日志:相机崩溃日志

我尝试了很多次,但找不到问题。我认为这是一些内存问题,但我不确定。

有人可以调查一下并帮助我找出问题所在。

任何帮助/建议将不胜感激。

谢谢

4

2 回答 2

0

此块中的所有内容都应在相机关闭后完成

if (event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO) {
}

相机是内存密集型的,您正在打开新窗口并做很多其他事情......不好。

于 2012-10-31T03:00:31.580 回答
0

这是 Titanium 上的老化问题 ( TIMOB-12848

在某些设备上,原生相机应用程序(Titanium 使用 Intent 调用它)会导致 Android 破坏我们的应用程序。当它尝试重新启动它时,不会恢复先前的状态,因此不会调用意图回调。

我找到了一个简单的解决方法来最小化这个问题,但没有解决它。它只是以某种方式“掩盖”它。

解决方法在上一个链接中讨论,完整的示例代码在这里

于 2014-12-22T19:54:45.333 回答