将拍摄的照片保存到特定文件夹
Posted
技术标签:
【中文标题】将拍摄的照片保存到特定文件夹【英文标题】:saving photos taken to a specific folder 【发布时间】:2012-03-25 04:36:48 【问题描述】:我需要一些帮助,将我的相机拍摄的照片保存到 SD 卡上的特定文件夹中。我的相机打开,拍照并保存;但它会将它们保存到标准文件夹中。我的代码是:
public class Camera extends Activity
public static final int MEDIA_TYPE_IMAGE = 1;
public static final int MEDIA_TYPE_VIDEO = 2;
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
String Path;
private Uri fileUri;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
Bundle extras=getIntent().getExtras();
Path= extras.getString("Path");
Log.d("camear","path: "+Path);
//File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyCameraApp");
Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
this.startActivity(intent);
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
//mediaFile = new File(mediaStorageDir.getPath() + File.separator +"IMG_"+ timeStamp + ".jpg");
//fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
Uri outputFileUri= Uri.fromFile(new File(Path+"/camera/"+timeStamp+".jpg"));// create a file to save the image
intent.putExtra("output", outputFileUri); // set the image file name
// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
路径来自应用程序上的另一个活动,它可以很好地传递它的值。在上一个活动中,它创建了我想要保存图片的文件夹。
我查看了以下答案,并尝试实施一些建议:How to save images from Camera in android to specific folder?。我没有尝试的一件事是在 OnActivityResult 的最后一个建议中。那是钥匙还是我还缺少其他东西?这个页面在这里提到了 ContentResolver The Camera Intent is simply not working,一件事是两个页面看起来都想做同样的事情,但是以不同的方式去做。
【问题讨论】:
保罗,添加这个intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
您是建议将其添加到文件中还是替换我已经拥有的其他 intent.putExtra?当我尝试添加和或替换它时,仍然会这样做。使用我的调试器,我看到 outputFileUri 指向:file:///mnt/sdcard/BucketMonkey/32rm215/camera。将相机的最后一个文件添加到路径中只是标准吗?我没有包含相机的路径的 mkdir,这会导致我的问题吗?
我不能编辑我以前的帖子,但忽略我关于相机附在最后的评论,那是我自己的错。但即使路径是合法文件夹,它仍然保存在主相机文件夹中。
你能粘贴你的 onActivityResult(int requestCode, int resultCode, Intent data)
【参考方案1】:
我发现我做错了什么。如果你看代码,我犯了两个错误。第一个错误是我的路径。我从上一个活动中获得了正确的路径,但是我没有在此处创建文件夹路径。这是对我有用的代码:
File Folder=new File(Path);
File picFile= new File(Folder.getPath()+"/"+timeStamp+".jpg");
第一行检查文件夹,第二行使用文件夹的路径创建文件。我没有任何一部分。如果它没有找到路径,它只是想保存就保存。
我遇到的另一个问题是我的 Intent 调用,我使用了:MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA。这没有任何@Overrides 显然就像保存在其文件夹中的实际相机一样。我将其更改为: MediaStore.ACTION_IMAGE_CAPTURE,这让我有更多的控制权。
我遇到并发现的另一个问题是 ACTION_IMAGE_CAPTURE,它需要并关闭。但是,如果您使用从相机应用程序返回的结果代码实现 onActivityResult,您可以重新调用相机并使其再次运行,或者您可以将其关闭并返回到另一个活动。这不是原始问题的一部分,而是我遇到的问题。
【讨论】:
你能发布解决方案吗?以上是关于将拍摄的照片保存到特定文件夹的主要内容,如果未能解决你的问题,请参考以下文章