Skip to content

Commit 905e20c

Browse files
committed
Use "yyyy-MM-dd_HH-mm-ss.SSS" for saved file & directory names
YYYY-MM-DD_HH-MM-SS works except for one thing-- you can have multiple images (or whatever) taken per second. For that reason, I'm using: "yyyy-MM-dd_HH-mm-ss.SSS" So it's ISO8601 + 3 numeric digits ...which includes milliseconds. Notice this should also fix a bug where identically-named files taken within the same second were getting overwritten.
1 parent 460a732 commit 905e20c

File tree

5 files changed

+30
-11
lines changed

5 files changed

+30
-11
lines changed

src/main/java/org/havenapp/main/Utils.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
* Class containing util functions which will be used multiple times throughout the app.
1212
*/
1313

14-
class Utils {
14+
public class Utils {
1515

16-
private static final String DATE_TIME_PATTERN = "yyyy-MM-dd_HH-mm-ss";
16+
public static final String DATE_TIME_PATTERN = "yyyy-MM-dd_HH-mm-ss.SSS";
1717

1818
static String getTimerText(long milliseconds) {
1919
String timerText;
@@ -41,7 +41,7 @@ static String getTimerText(long milliseconds) {
4141
* The default {@link Locale} is used.
4242
*
4343
* @param date concerned {@link Date} instance
44-
* @return a string of the format "yyyy-MM-dd_HH:mm:ss" for the corresponding date
44+
* @return a string of the format "yyyy-MM-dd_HH-mm-ss.SSS" for the corresponding date
4545
*/
4646
public static String getDateTime(Date date) {
4747
return new SimpleDateFormat(DATE_TIME_PATTERN, Locale.getDefault()).format(date);

src/main/java/org/havenapp/main/sensors/media/AudioRecorderTask.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@
1515
import android.os.Environment;
1616
import android.util.Log;
1717

18-
import java.io.File;
19-
2018
import org.havenapp.main.PreferenceManager;
19+
import org.havenapp.main.Utils;
20+
21+
import java.io.File;
22+
import java.text.SimpleDateFormat;
23+
import java.util.Date;
24+
import java.util.Locale;
2125

2226
public class AudioRecorderTask extends Thread {
2327

@@ -69,7 +73,8 @@ protected AudioRecorderTask(Context context) {
6973

7074
File fileFolder = new File(Environment.getExternalStorageDirectory().getPath(),prefs.getDefaultMediaStoragePath());
7175
fileFolder.mkdirs();
72-
audioPath = new File(fileFolder,new java.util.Date().getTime() + ".m4a");
76+
audioPath = new File(fileFolder,new SimpleDateFormat(Utils.DATE_TIME_PATTERN,
77+
Locale.getDefault()).format(new Date()) + ".m4a");
7378

7479
}
7580

src/main/java/org/havenapp/main/sensors/motion/CameraViewHolder.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,19 @@
3030
import com.google.android.cameraview.CameraView;
3131

3232
import org.havenapp.main.PreferenceManager;
33+
import org.havenapp.main.Utils;
3334
import org.havenapp.main.model.EventTrigger;
3435
import org.havenapp.main.service.MonitorService;
3536
import org.jcodec.api.android.AndroidSequenceEncoder;
3637

3738
import java.io.File;
3839
import java.io.FileOutputStream;
3940
import java.io.IOException;
41+
import java.text.SimpleDateFormat;
4042
import java.util.ArrayList;
4143
import java.util.Date;
4244
import java.util.List;
45+
import java.util.Locale;
4346
import java.util.concurrent.BlockingQueue;
4447
import java.util.concurrent.LinkedBlockingQueue;
4548
import java.util.concurrent.ThreadPoolExecutor;
@@ -145,9 +148,10 @@ public CameraViewHolder(Activity context, CameraView cameraView) {
145148
File fileImageDir = new File(Environment.getExternalStorageDirectory(), prefs.getDefaultMediaStoragePath());
146149
fileImageDir.mkdirs();
147150

148-
String ts = new Date().getTime() + ".jpg";
151+
String ts = new SimpleDateFormat(Utils.DATE_TIME_PATTERN,
152+
Locale.getDefault()).format(new Date());
149153

150-
File fileImage = new File(fileImageDir, "detected.original." + ts);
154+
File fileImage = new File(fileImageDir, ts.concat(".detected.original.jpg"));
151155
FileOutputStream stream = new FileOutputStream(fileImage);
152156
rawBitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
153157

@@ -329,7 +333,8 @@ private synchronized boolean recordVideo() {
329333

330334
if (doingVideoProcessing)
331335
return false;
332-
String ts1 = String.valueOf(new Date().getTime());
336+
String ts1 = new SimpleDateFormat(Utils.DATE_TIME_PATTERN,
337+
Locale.getDefault()).format(new Date());
333338
File fileStoragePath = new File(Environment.getExternalStorageDirectory(),prefs.getDefaultMediaStoragePath());
334339
fileStoragePath.mkdirs();
335340

src/main/java/org/havenapp/main/service/WebServer.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.util.Log;
77

88
import org.havenapp.main.R;
9+
import org.havenapp.main.Utils;
910
import org.havenapp.main.model.Event;
1011
import org.havenapp.main.model.EventTrigger;
1112

@@ -14,8 +15,10 @@
1415
import java.io.IOException;
1516
import java.nio.charset.Charset;
1617
import java.security.MessageDigest;
18+
import java.text.SimpleDateFormat;
1719
import java.util.HashMap;
1820
import java.util.List;
21+
import java.util.Locale;
1922
import java.util.Map;
2023
import java.util.UUID;
2124

@@ -169,7 +172,8 @@ private void showEvent (Event event, StringBuffer page) {
169172
for (EventTrigger eventTrigger: triggers)
170173
{
171174
String title = eventTrigger.getStringType(mContext);
172-
String desc = eventTrigger.getTriggerTime().toString();
175+
String desc = new SimpleDateFormat(Utils.DATE_TIME_PATTERN,
176+
Locale.getDefault()).format(eventTrigger.getTriggerTime());
173177

174178
page.append("<b>");
175179
page.append(title).append("</b><br/>");

src/main/java/org/havenapp/main/ui/EventActivity.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,14 @@
1616
import android.view.View;
1717

1818
import org.havenapp.main.R;
19+
import org.havenapp.main.Utils;
1920
import org.havenapp.main.model.Event;
2021
import org.havenapp.main.model.EventTrigger;
2122

2223
import java.io.File;
24+
import java.text.SimpleDateFormat;
2325
import java.util.ArrayList;
26+
import java.util.Locale;
2427

2528
public class EventActivity extends AppCompatActivity {
2629

@@ -176,7 +179,9 @@ private String generateLog () {
176179

177180
for (EventTrigger eventTrigger : mEvent.getEventTriggers()) {
178181

179-
mEventLog.append("Event Triggered @ ").append(eventTrigger.getTriggerTime().toString()).append("\n");
182+
mEventLog.append("Event Triggered @ ").append(
183+
new SimpleDateFormat(Utils.DATE_TIME_PATTERN,
184+
Locale.getDefault()).format(eventTrigger.getTriggerTime())).append("\n");
180185

181186
String sType = eventTrigger.getStringType(this);
182187

0 commit comments

Comments
 (0)