【发布时间】:2011-11-25 11:07:33
【问题描述】:
我正在编写一个从数码相机下载照片的应用程序。将它们保存到什么地方最合适?必须是外部存储,因为需要千兆字节的图像。
【问题讨论】:
我正在编写一个从数码相机下载照片的应用程序。将它们保存到什么地方最合适?必须是外部存储,因为需要千兆字节的图像。
【问题讨论】:
保存应该共享的文件
如果您要保存并非特定于您的应用程序且在卸载应用程序时不应删除的文件,请将它们保存到外部存储上的公共目录之一。这些目录位于外部存储的根目录,例如 Music/、Pictures/、Ringtones/ 等。
在 API 级别 8 或更高版本中,使用 getExternalStoragePublicDirectory(), 将您想要的公共目录类型传递给它,例如 DIRECTORY_MUSIC、DIRECTORY_PICTURES、DIRECTORY_RINGTONES 或其他。 如有必要,此方法将创建适当的目录。 如果您使用 API 级别 7 或更低,请使用 getExternalStorageDirectory() 打开代表根的文件 的外部存储,然后将您的共享文件保存在其中一个 以下目录:
音乐/ - 媒体扫描仪将此处找到的所有媒体归类为用户音乐。
Podcasts/ - 媒体扫描仪将此处找到的所有媒体分类为 播客。
铃声/ - 媒体扫描仪将此处找到的所有媒体分类为 铃声。
警报/ - 媒体扫描仪将此处找到的所有媒体分类为 警报声。
Notifications/ - 媒体扫描仪对所有媒体进行分类 在此处作为通知声音找到。
图片/ - 所有照片(不包括 用相机拍摄的)。
电影/ - 所有电影(不包括那些 用摄像机拍摄的)。
下载/ - 其他下载。
【讨论】:
如果您希望它们可以被其他应用程序访问,只需将它们放在带有相机原始文件夹名称的DCIM文件夹中,(android是100ANDROID,其他相机有其他)。与其他应用程序一样,用户希望将图片存储在那里。
【讨论】:
外部存储是存储图像的最佳位置,默认位置是使用获取它
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
如果你想在默认图片目录中创建一个文件夹,然后使用下面 示例代码:
File storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+ "/Your_folder_name");
这是方法,这是我将位图图像保存到默认图片目录的方式:
private String saveImage(Bitmap image) {
String savedImagePath = null;
Date d = new Date();
CharSequence s = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());
String imageFileName = "IMG" + s + count + ".jpg";
File storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+ "/Your_folder_name");
boolean success = true;
if (!storageDir.exists()) {
success = storageDir.mkdirs();
}
if (success) {
File imageFile = new File(storageDir, imageFileName);
savedImagePath = imageFile.getAbsolutePath();
try {
OutputStream fOut = new FileOutputStream(imageFile);
image.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.close();
} catch (Exception e) {
e.printStackTrace();
}
// Add the image to the system gallery
//galleryAddPic(savedImagePath);
//Toast.makeText(mContext, "IMAGE SAVED", Toast.LENGTH_LONG).show();
}
return savedImagePath;
}
【讨论】:
外部存储,因为您需要大量空间。
【讨论】:
Here is an example from Google。请注意,您必须根据描述在AndroidManifest.xml 和res/xml/file_paths.xml 中定义<provider>。但是,要使用getExternalStoragePublicDirectory(),我必须在file_paths.xml 文件中设置path="."..
【讨论】: