3

在我的应用程序中,我使用一个按钮启动相机应用程序并将图片保存到 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";

然后它可以工作,但我需要图像名称中的当前日期和时间。

4

4 回答 4

10

冒号:不是文件名中的有效字符,这就是它无法创建此类文件的原因。尝试将您的名称模式更改为以下内容:

CharSequence s  = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());
于 2013-03-31T10:00:30.717 回答
5

输入此代码并尝试:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HH_mm_ss");
String currentTimeStamp = dateFormat.format(new Date());
于 2014-10-08T13:44:06.380 回答
2

这是一个替代解决方案:

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);

如果您只想将 TimeStamp 作为图像名称,则可以"picture_" +String imageFileName.

于 2013-03-31T10:07:34.163 回答
0

用这个

File image = new File(imagesFolder, s+ "Rj.jpg"); 
于 2016-12-02T10:06:03.227 回答