我已经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中崩溃。在我看来,它是标准的代码和功能。我该如何使用内置相机。我尝试过几件事。
答案 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”错误,这很烦人。有没有人有解决方案让它在模拟器上工作?