Я хочу создать изображение с помощью намерения камеры и сохранить его в папке DCIM по умолчанию. Затем я хочу получить путь/имя файла, в котором хранится изображение.
Я пытаюсь сделать это с помощью следующего кода:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE);
С этим кодом камера открывается и после того, как я сделал один снимок, она закрывается и сохраняет снимок в папку изображений по умолчанию (обычно /dcim/camera или sdcard/dcim/camera...)
но как мне теперь получить путь и имя файла сделанного снимка?
Я перепробовал почти все в onActivityResult
.
I tried
String result = data.getData();
and
String result = data.getDataString();
and
String result = data.toURI();
and
Uri uri = data.getData();
etc.
Я исследовал последние два дня, чтобы найти решение для этого, есть много статей в Интернете и на stackoverflow, но ничего не работает. Мне не нужна миниатюра, мне нужен только путь (uri?) к изображению, которое сняла камера.
Спасибо за любую помощь
EDIT: Когда я пробую:
path=Environment.DIRECTORY_DCIM + "/test.jpg";
File file = new File(path);
Uri outputFileUri = Uri.fromFile(file);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);
он сохраняет изображение не как test.jpg, а с обычным именем 2011-10-03.....jpg (но это тоже нормально, мне нужен только путь к изображению, неважно, как оно называется).
Best regards
EDIT Again
path=Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/";
File file = new File(path,"test111111111.jpg");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
Uri outputFileUri = Uri.fromFile(file);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);
Когда я пробую это, изображение сохраняется в нужную папку и с заданным именем (например, test111111.jpg). Но как мне теперь получить путь к файлу в onActivityResult?
Когда вы запускаете ACTION_IMAGE_CAPTURE
, вы можете передать дополнительные MediaStore.EXTRA_OUTPUT
как URI
файла, в который вы хотите сохранить изображение.
Вот простой пример:
File file = new File(path);
Uri outputFileUri = Uri.fromFile(file);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);
РЕДАКТИРОВАТЬ: Я только что попробовал на своем устройстве и file.createNewFile()
решил проблему для меня.