android froyo 2.2上的“致命异常:GLThread 11”

时间:2011-05-19 22:23:41

标签: android exception camera android-2.2-froyo

我已经google了很多,发现堆栈溢出的几个线程,但它没有帮助。我试图通过调用Intent来使用Android的内置摄像头。这适用于2.1但在2.2上我得到了“致命异常:GLThread 11”例外。

我读了这个主题 Camera crashes in Android 2.2

谷歌线程 http://code.google.com/p/android/issues/detail?id=7909

    String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "temp-" + System.currentTimeMillis() + ".jpg";

    ContentValues values = new ContentValues();
    values.put(MediaStore.Images.Media.TITLE, fileName);
    values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");

    imageUri = ctx.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    //intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);


    //http://marakana.com/forums/android/examples/39.html
    ctx.startActivityForResult(intent, REQUEST_CODE);

这是我用来调用相机的代码。我想是直截了当的。但是,当我拍照并点击“保存”/“接受”按钮时,应用程序在Android 2.2中崩溃。在我看来,它是标准的代码和功能。我该如何使用内置相机。我尝试过几件事。

1 个答案:

答案 0 :(得分:2)

让我自己回答:)我设法让它运作起来。我还在发现Android。首先,上面的代码永远不会起作用。尽管如此,使用相机仍然是一件很糟糕的工作......并对其进行测试。我无法在2.2的模拟器中使用它,因为2.1它可以工作。但该代码适用于设备上的2.2和2.1。我发现的另一个奇怪的事情是,当您将调试器附加到您的设备时,无法使用MediaStore.Images.Media.EXTERNAL_CONTENT_URI。它会抛出外部存储不存在的错误。它与USB连接有关。无论如何,用于意图相机的代码:

        String fileName = System.currentTimeMillis() + ".jpg";
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, fileName);
        values.put(MediaStore.Images.Media.DESCRIPTION, "Image capture by camera");
        values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");

        try
        {
            imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
        }
        catch (Exception e)
        {
            Log.e(TAG, "", e);
        }

        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

        ctx.startActivityForResult(intent, REQUEST_CODE_PHOTO);

非常标准,我添加了try catch以避免在我将调试器附加到我的设备时应用程序崩溃。如果为MediaStore.EXTRA_OUTPUT传递null,则摄像机将显示无法找到SD卡的消息。哪个更好然后崩溃。

拍摄照片后,相机将返回当前活动,您可以使用将存储在imageUri变量中的图像。

在2.2的模拟器中,当我尝试使用相机时,仍然会抛出“FATAL EXCEPTION:GLThread 11”错误,这很烦人。有没有人有解决方案让它在模拟器上工作?