Посмотрите, что вы делаете:
- Вы указываете путь, где хранится только что сделанный снимок, с
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File (Environment.getExternalStorageDirectory(), "testExtra" + String.valueOf (System.currentTimeMillis()) + ".jpg")));
- при доступе к изображению вы «перетаскиваете» данные из намерения с помощью
Bitmap mPicture = (Bitmap) data.getExtras().get("data");
Очевидно, вы не получаете доступ к изображению из его файла. Насколько я знаю, Intents не предназначены для переноса большого количества данных, так как они передаются, например, между Мероприятия. Что вы должны сделать, это открыть изображение из файла, созданного намерением камеры. Выглядит так:
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
// Limit the filesize since 5MP pictures will kill you RAM
bitmapOptions.inSampleSize = 6;
imgBitmap = BitmapFactory.decodeFile(pathToPicture, bitmapOptions);
Это должно сработать. Раньше у меня так получалось, но у меня проблемы с 2.1 на нескольких устройствах. Работает (все еще) отлично на Nexus One.
Взгляните на MediaStore.ACTION_IMAGE_CAPTURE .
Надеюсь, это поможет.
С уважением,
Стеф