如何更改相机保存路径?

时间:2011-12-15 11:52:49

标签: java android mobile android-camera

使用默认相机应用程序的照片和视频保存在SD卡上。

我真的需要知道是否有一种方法(简单或难以)更改路径,以便我可以将这些文件保存在内部存储器

或者,如果您知道来自Android市场的另一个相机应用程序,可以选择更改路径。

我不需要SD卡解决方案。

2 个答案:

答案 0 :(得分:6)

你可以做点什么,

这适用于我的情况..

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());
startActivityForResult(intent, TAKE_PHOTO_CODE);

getImageUri()

/**
 * Get the uri of the captured file
 * @return A Uri which path is the path of an image file, stored on the dcim folder
 */
private Uri getImageUri() {
    // Store image in dcim
    // Here you can change yourinternal storage path to store those images..
    File file = new File(Environment.getExternalStorageDirectory() + "/DCIM", CAPTURE_TITLE);
    Uri imgUri = Uri.fromFile(file);

    return imgUri;
}

有关详细信息,请查看How to capture an image and store it with the native Android Camera

编辑:

在我的代码中,我将图片存储在SDCARD上,但您可以根据需要提供内部存储路径,例如/data/data/<package_name>/files/ ..

您可以使用Context.getFilesDir()。但请记住,即使这是默认的私有您的应用程序,因此其他应用程序(包括媒体商店)将无法访问它。也就是说,您始终可以选择将文件设置为可读或可写。

Context.getDir()Context.MODE_WORLD_WRITEABLE编写其他应用可以写入的目录。但同样,我质疑是否需要将图像数据存储在本地存储中。用户不会理解这一点,除非用户在使用您的应用程序时不会安装SD卡(这种情况并不常见)。

答案 1 :(得分:0)

是的,我相信可以从开发者指南中查看。

public static final int MEDIA_TYPE_IMAGE = 1;
public static final int MEDIA_TYPE_VIDEO = 2;

/** Create a file Uri for saving an image or video */
private static Uri getOutputMediaFileUri(int type){
  return Uri.fromFile(getOutputMediaFile(type));
}

/** Create a File for saving an image or video */
private static Uri getOutputMediaFile(int type){
// To be safe, you should check that the SDCard is mounted
// using Environment.getExternalStorageState() before doing this.

File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
          Environment.DIRECTORY_PICTURES), "MyCameraApp");
// This location works best if you want the created images to be shared
// between applications and persist after your app has been uninstalled.

// Create the storage directory if it does not exist
if (! mediaStorageDir.exists()){
    if (! mediaStorageDir.mkdirs()){
        Log.d("MyCameraApp", "failed to create directory");
        return null;
    }
}

// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE){
    mediaFile = new File(mediaStorageDir.getPath() + File.separator +
    "IMG_"+ timeStamp + ".jpg");
} else if(type == MEDIA_TYPE_VIDEO) {
    mediaFile = new File(mediaStorageDir.getPath() + File.separator +
    "VID_"+ timeStamp + ".mp4");
} else {
    return null;
}

return mediaFile;

}

more info here