2011-12-15 95 views
2

使用默認相機應用的照片和視頻將保存在SD卡上。如何更改相機保存路徑?

我真的需要知道是否有方法(簡單或難)更改路徑,以便我可以將這些文件保存在內部存儲器

或者如果你知道另一個來自android市場的相機應用程序,可以選擇更改路徑。

我不需要SD卡解決方案。

回答

5

你可以做這樣的事情,

這工作在我的情況..

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卡。

+0

給予好評毆打我的answser。 =) – 2011-12-15 12:01:38

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