Получение полноразмерного изображения с камеры не работает на Galaxy S - PullRequest
3 голосов
/ 27 сентября 2010

У меня проблема с захватом изображения из приложения встроенной камеры на 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, который будет использоваться.

Я пропустил здесь шаг?Все, что я действительно хочу сделать, это получить файл только что сделанного снимка.

Заранее спасибо, Зара.

1 Ответ

0 голосов
/ 07 июня 2011

Пытались ли вы указать файл в обоих случаях до съемки и после?

public static File getTempFile() {
    //it will return /sdcard/image.jpg
    final File path = new File(Environment.getExternalStorageDirectory(), "MyApp");
    if (!path.exists()) {
        path.mkdir();
    }
    return new File(path, "image.jpg");
}

Я использую эту функцию, чтобы получить и установить путь к файлу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...