Есть ли способ сохранить полноразмерное изображение, возвращенное с камеры, во внутренней памяти? - PullRequest
7 голосов
/ 08 января 2011

Я использую

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(externalFileObj));

намерение вызвать активность камеры по умолчанию. Чтобы получить полное изображение, вам нужно указать intent.putExtra (). Но для этого всегда требуется URI, который работает только для внешних файлов хранения.

Я попытался создать изображение temp.jpg во внутренней памяти и передать его URI

Uri.fromFile(new File(getFilesDir() + "/temp.jpg"));

, но активность камеры не вернется после захвата изображения.

То есть в нашей деятельности нет способа получить полноразмерное изображение из приложения камеры по умолчанию, не используя внешнее хранилище? Предполагая, что устройство не имеет SD-карту или используется в настоящее время можно избежать его использования?

Да, я знаю, что мы можем создать нашу собственную поверхность просмотра камеры, но я хочу использовать приложение камеры по умолчанию, поскольку оно естественное и имеет много других опций.

Спасибо.

Ответы [ 2 ]

1 голос
/ 11 января 2011

Ах! Я понял. Каталог файлов во внутренней памяти по умолчанию является закрытым и недоступен для записи внешним приложениям (например, приложение камеры является внешним приложением)

Просто создайте новый каталог в режиме записи в пространстве приложения (внутренняя память) и передайте этот URI в активность камеры. И все работает отлично. Нет необходимости внешнего хранилища, чтобы присутствовать вообще. Проверено и отлично работает.

0 голосов
/ 08 января 2011

Я только что использовал код, подобный следующему:

mTempFilePath = File.createTempFile("myappprefix_", "");
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTempFilePath));

Есть ли какая-то причина, по которой он должен быть во внутренней памяти?Я ожидаю, что только телефоны, такие как HTC Incredible (который имеет внутреннее хранилище фотографий), смогут явно хранить фотографии на внутреннем.

...