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

问题描述

| 我在Google上搜索了很多,发现堆栈溢出时有几个线程,但这并没有帮助。我试图通过调用Intent来使用Android的内置摄像头。这在2.1上有效,但在2.2上我得到“致命异常:GLThread 11”异常。 我读了这个话题 相机在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);
这是我用来调用相机的代码。我想直截了当。但是,当我拍照并按下\'save \'/ \'accept \'按钮时,该应用在Android 2.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,则相机将显示一条消息,指出找不到sdcard。然后崩溃更好。 拍照后,相机将返回到当前活动,并且可以使用将存储在imageUri变量中的图像。 在2.2模拟器中,当我尝试使用相机时,仍然抛出错误“致命异常:GLThread 11”,这很烦人。有没有人有办法让它在模拟器上工作?