有没有办法存储从内存中的相机活动返回的全尺寸图像?

时间:2011-01-08 03:49:52

标签: android camera android-intent

我正在使用

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 个答案:

答案 0 :(得分:1)

啊!我知道了。内部存储器中的文件目录默认是私有的,外部应用程序无法写入(例如,相机应用程序是外部应用程序)

只需在应用程序空间(内部存储器)中以可写模式创建一个新目录,并将此URI传递给摄像机Activity。一切正常。根本不需要外部存储器。经过测试并且工作正常。

答案 1 :(得分:0)

我刚刚使用了以下代码:

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

是否有某些原因需要内部存储?我希望只有像HTC Incredible(内置照片存储器)这样的手机能够在内部显式存储照片。