第二次运行时相机崩溃。(由于VM内存不足错误)

时间:2011-05-24 06:51:46

标签: android android-camera

您好我在我的活动中使用这段代码用于相机。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == TAKE_PICTURE_WITH_CAMERA) {
        if (resultCode == Activity.RESULT_OK) {

            // To Write the Images in SDCard
            File f = new File(imgName);
            try {
                Uri capturedImage = Uri
                                 .parse(android.provider.MediaStore.Images.Media
                                     .insertImage(getContentResolver(),
                                     f.getAbsolutePath(), null, null));

                Log.i("camera",
                      "Selected image: " + capturedImage.toString());

                pic.setImageURI(capturedImage);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        } else {
            Log.i("Camera", "Result code was " + resultCode);
        }
    }
}

我正在尝试将捕获的图像应用到我的ImageView。第一次,相机拍摄照片并将其设置为ImageView。但是当我第二次运行它时,我的应用程序无法将新捕获的图像设置为imageView。从相机意图返回后它崩溃了。我怎么解决这个问题? 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:5)

为了避免这种错误,必须首先缩放位图。我已经尝试了下面的代码,它工作正常。

bm1=Bitmap.createScaledBitmap(bm, 300, 300,true);
                    pic.setImageBitmap(bm1);

                    bm.recycle();
                    bm=null;

答案 1 :(得分:-3)

在阅读关于相机的内容时,我认为它是硬件。硬件总是使用自己的Thread。也许您需要创建一个内存复制图像并由调度程序提供服务。我不知道你的代码,但我有兴趣接受它来帮助你。

http://blog.lieberlieber.com/2009/07/09/controlinvoke-wpf-style-and-special-bitmapsource-handling/

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/f0c5e590-8bfe-4452-a784-4987af9fce89/