我目前正在开发一个使用内置相机的应用程序。 我通过单击一个按钮来调用此代码段:
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
//Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
path += "/myFolder/myPicture.jpg";
File file = new File( path );
//file.mkdirs();
Uri outputFileUri = Uri.fromFile( file );
//String absoluteOutputFileUri = file.getAbsolutePath();
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, 0);
用相机拍照后,jpg很好存储在sdcard/myFolder/myPicture.jpg,但它也存储在/sdcard/DCIM/Camera/2011-06-14 10.36.10.jpg,默认路径。
有没有办法阻止内置相机将图片存储在默认文件夹中?
编辑:我想我会直接使用 Camera 类
最佳答案
另一种方法,在android 2.1上测试,取图库最后一张图片的ID或绝对路径,然后你可以删除重复的图片。
可以这样做:
/**
* Gets the last image id from the media store
* @return
*/
private int getLastImageId(){
final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
final String imageOrderBy = MediaStore.Images.Media._ID+" DESC";
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy);
if(imageCursor.moveToFirst()){
int id = imageCursor.getInt(imageCursor.getColumnIndex(MediaStore.Images.Media._ID));
String fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
Log.d(TAG, "getLastImageId::id " + id);
Log.d(TAG, "getLastImageId::path " + fullPath);
imageCursor.close();
return id;
}else{
return 0;
}
}
并删除文件:
private void removeImage(int id) {
ContentResolver cr = getContentResolver();
cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media._ID + "=?", new String[]{ Long.toString(id) } );
}
此代码基于以下帖子:Deleting a gallery image after camera intent photo taken
关于android - 内置摄像头,使用额外的 MediaStore.EXTRA_OUTPUT 存储图片两次(在我的文件夹中,在默认值中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6341329/