使用日期和编号将图像存储到SD卡中

时间:2014-03-12 10:31:33

标签: android android-sdcard

我正在使用自定义相机捕捉图像并使用日期时间保存到SD卡中,如下所示:

// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
                .format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator
                + "IMG_" + timeStamp + ".jpg");
return mediaFile;

但是我必须对文件名进行一些小改动,就像下面的现有名字一样:

IMG_20140312_162137.jpg

现在我希望每当用户开始捕捉图像时,需要从001开始计数

1张图片IMG_20140312_001.jpg 2张图片IMG_20140312_002.jpg 等等。

4 个答案:

答案 0 :(得分:3)

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
                .format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator
                + "IMG_" + timeStamp + getNextNumber() +".jpg");
return mediaFile;




public String getNextNumber(){
    SharedPreferences prefs = this.getSharedPreferences(
          "com.example.app", Context.MODE_PRIVATE);

    int default = 0;


    int value = prefs.getInt("PICTURE_COUNT", default); 
    prefs.edit().putInt("PICTURE_COUNT", ++value).commit();
    return convertToDesiredFormat(value);
}

String convertToDesiredFormat(int value){
      String toReturn = null;
      if (value > 99)
         toReturn = Integer.toString(value);
      else if (value > 9)
         toReturn = "0" + Integer.toString(value);
      else if (value >= 0)
         toReturn = "00" + Integer.toString(value);
      return toReturn;
}

答案 1 :(得分:0)

然后将图像计数存储在一个共享首选项中,并且计数增加,因为你点击任何没有图片,然后再次更新共享首选项,因为如果你从堆栈清除你的应用程序,那么下次这个计数必须从最后我们使用共享偏好的原因

答案 2 :(得分:0)

在图像名称的末尾附加一个计数器,如下所示:

 int count=0;
 String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
            .format(new Date());
    File mediaFile;
    mediaFile = new File(mediaStorageDir.getPath() + File.separator
            + "IMG_" + timeStamp +" _00 "+ count +".jpg");
     count++;

    return mediaFile;

答案 3 :(得分:0)

为此,您需要在应用程序重新打开时以共享首选项保持计数器的跟踪

SharedPreferences pref;

    SharedPreferences.Editor edit;

        pref = context.getSharedPreferences("counter", 
                Context.MODE_PRIVATE);
        edit = pref.edit();

edit.putInt("count" ,count++);
edit.commit();


and the get the count when next time you use the count

mediaFile = new File(mediaStorageDir.getPath() + File.separator
                + "IMG_" + timeStamp +pref.getString("count", 0))+ ".jpg");