是否有一种“安全”的方式来调用 android 相机MediaStore.ACTION_IMAGE_CAPTURE
以捕捉图片?我正在使用以下代码从相机拍摄快照:
Uri tempFile = Uri.fromFile(tempFile()); // returns a temporary stored files that is "Context.MODE_WORLD_WRITEABLE" so that android can put the file in this location
// tempFile looks like: file:///data/data/com.example.myapp/files/temp_picture.jpg
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
camera.putExtra(MediaStore.EXTRA_OUTPUT, tempFile);
startActivityForResult(camera, Constants.REQUESTCODE_PICTURE_RESULT);
之后(从相机“ RESULT_OK
”返回)我将 tempFile 复制到安全的应用程序商店Context.MODE_PRIVATE
并删除tempFile
. 一切正常,照片被拍摄并存储在给定的 Uri 上。但图像也被放置在我的设备(位置是)的画廊中(如果是我当前的开发设备“HTC Sensation” /mnt/sdcard/DCIM/100MEDIA/IMAG00XX.jpg
)。为什么图片存储了两次,我的代码中甚至没有提到这个位置?这是 HTC 的“功能”还是 android 相机将文件存储两次以进行媒体扫描?
我还尝试通过省略MediaStore.EXTRA_OUTPUT
参数从相机中获取位图,但是使用此代码我只能从相机中获取缩略图(没有全分辨率)。
我阅读了很多关于 android 相机的信息,但我必须以“安全”的方式从相机中获取图像(没有其他应用程序应该读取从相机中获取的数据)。我已经考虑过实现我自己的相机表面来捕捉图片,但是通过这种方法,我必须编写很多内置相机应用程序已经提供的东西(闪光灯、饱和度、效果、缩放......)。在安卓系统上拍照真的那么难吗?