У меня проблема с захватом изображения из приложения встроенной камеры на Samsung Galaxy S.
У меня в приложении есть кнопка, которая при нажатии запускает камеру:
ContentValues values = new ContentValues();
values.put(Images.Media.MIME_TYPE, "image/jpeg");
mPicUri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mPicUri.getPath());
startActivityForResult(intent, REQ_CODE_TAKE_PIC);
Из того, что я прочитал в Интернете, я могу получить полноразмерную только что сделанную фотографию, используя URI, который я передал намерению.И так у меня есть на моем onActivityResult:
Uri selectedImage = mPicUri;
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
И затем, используя переменную filePath, я устанавливаю изображение в ImageView.Я не получаю изображения, и когда я прошел через код, я обнаружил, что BitmapFactory.decodeFile()
возвращает null
.
Bitmap chosenPic = BitmapFactory.decodeFile(filePath);
Так что я попытался немного больше отладки.Я обнаружил, что mPicUri возвращает, казалось бы, действительный URI, например: content://media/external/images/media/90
.После того, как снимок сделан, и пользователь решает сохранить снимок, курсор разрешается в следующем filePath: /sdcard/DCIM/Camera/1285601413961.jpg
.Хотя растровое изображение не декодируется, НО, когда я просматривал галерею, там была только что сделанная фотография.Поэтому я попытался взглянуть на URI этой картинки, и вот что я получил:
URI is: content://media/external/images/media/91
File path is: /sdcard/DCIM/Camera/2010-09-27 23.30.30.jpg
Итак, похоже, что значение, которое я получил от mPicUri, не является final URI, который будет использоваться.
Я пропустил здесь шаг?Все, что я действительно хочу сделать, это получить файл только что сделанного снимка.
Заранее спасибо, Зара.