使用名称中的当前日期和时间将图像保存到 sd 不起作用
Posted
技术标签:
【中文标题】使用名称中的当前日期和时间将图像保存到 sd 不起作用【英文标题】:Saving image to sd with current date and time in name doesn't work 【发布时间】:2013-03-21 15:09:40 【问题描述】:在我的应用程序中,我使用一个按钮启动相机应用程序并将图片保存到 sdCard 上的特定文件夹,按当前日期和时间命名。当我对图片的名称进行硬编码时,它可以正常工作,但如果我尝试在名称中添加日期,则它根本不起作用。
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), Constants.IMAGE_FOLDER_URI);
imagesFolder.mkdirs();
Date d = new Date();
CharSequence s = DateFormat.format("MM-dd-yy hh:mm:ss", d.getTime());
File image = new File(imagesFolder, s.toString() + ".jpg"); //this line doesn't work
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivity(imageIntent);
如果我说:
s = "some_name";
然后它可以工作,但我需要图像名称中的当前日期和时间。
【问题讨论】:
【参考方案1】:冒号:
不是文件名中的有效字符,这就是它无法创建此类文件的原因。
尝试将您的名称模式更改为以下内容:
CharSequence s = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());
【讨论】:
【参考方案2】:把这段代码放到试试:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HH_mm_ss");
String currentTimeStamp = dateFormat.format(new Date());
【讨论】:
【参考方案3】:这是一个替代解决方案:
File cameraFolder;
if (android.os.Environment.getExternalStorageState().equals
(android.os.Environment.MEDIA_MOUNTED))
cameraFolder = new File(android.os.Environment.getExternalStorageDirectory(),
"YOUR_FOLDER_NAME/");
else
cameraFolder= StatusUpdate.this.getCacheDir();
if(!cameraFolder.exists())
cameraFolder.mkdirs();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
String timeStamp = dateFormat.format(new Date());
String imageFileName = "picture_" + timeStamp + ".jpg";
File photo = new File(Environment.getExternalStorageDirectory(),
"YOUR_FOLDER_NAME/" + imageFileName);
如果您只想将时间戳作为图像名称,您可以从String imageFileName
中删除"picture_" +
。
【讨论】:
android API 版本 22 的任何解决方案?这适用于至少 27 @Dev_Man:这不太可能适用于最低 27 版本。这个解决方案很久以前就发布了,效果很好。话虽如此,我不再使用此代码并开始使用库来处理图像拾取/捕获任务。省去了确保在多个制造商设备上兼容的麻烦。【参考方案4】:使用这个
File image = new File(imagesFolder, s+ "Rj.jpg");
【讨论】:
它不起作用,因为如前所述:冒号不是文件名中的有效字符。以上是关于使用名称中的当前日期和时间将图像保存到 sd 不起作用的主要内容,如果未能解决你的问题,请参考以下文章