Skip to content

Commit e881136

Browse files
committed
fix: remove toast + better logic for events folder
1 parent 6fad790 commit e881136

4 files changed

Lines changed: 58 additions & 18 deletions

File tree

‎app/src/main/java/com/drivehub/kamera/MainActivity.java‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ protected void onCreate(Bundle savedInstanceState) {
148148
return;
149149
}
150150
RecordingService.triggerEventSave(this);
151-
Toast.makeText(this, R.string.main_event_save_armed, Toast.LENGTH_SHORT).show();
152151
});
153152

154153
applyStoredRecordingStatus();

‎app/src/main/java/com/drivehub/kamera/dashcam/RecordingService.java‎

Lines changed: 58 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,9 @@ public int onStartCommand(Intent intent, int flags, int startId) {
235235
if (worker == null || !prefs().getBoolean(DashcamSettingsController.KEY_ENABLED, false)) {
236236
return START_STICKY;
237237
}
238-
armEventCapture();
239-
DashcamEventOverlayService.showConfirmation(this);
238+
if (armEventCapture()) {
239+
DashcamEventOverlayService.showConfirmation(this);
240+
}
240241
return START_STICKY;
241242
}
242243

@@ -433,20 +434,35 @@ private void onSegmentCompleted(File baseDir, String baseName, long startMs, lon
433434
}
434435
}
435436

436-
private void armEventCapture() {
437+
private boolean armEventCapture() {
437438
long now = System.currentTimeMillis();
438439
String eventBaseName = "event_" + makeTimestampBase(now, "yyMMddHHmmssSSS");
439-
File eventDir = new File(getEventsBaseDir(), eventBaseName);
440-
// noinspection ResultOfMethodCallIgnored
441-
eventDir.mkdirs();
440+
File eventsBaseDir = getEventsBaseDir();
441+
if (eventsBaseDir == null) {
442+
DevRuntimeLog.add("RecordingService", "Event capture failed: events base dir unavailable");
443+
Log.e(TAG, "Failed to arm event capture because events base dir is unavailable");
444+
return false;
445+
}
446+
File eventDir = new File(eventsBaseDir, eventBaseName);
447+
if (!ensureDirectoryExists(eventDir, "event dir")) {
448+
DevRuntimeLog.add("RecordingService", "Event capture failed: mkdir " + eventDir.getAbsolutePath());
449+
Log.e(TAG, "Failed to create event dir " + eventDir.getAbsolutePath());
450+
return false;
451+
}
442452
synchronized (eventLock) {
443453
long currentSegmentOrdinal = completedSegmentCount + 1L;
444454
pendingEventRequests.add(new EventCaptureRequest(
445455
eventBaseName,
446456
Math.max(1L, currentSegmentOrdinal - EVENT_SEGMENTS_BEFORE_CURRENT),
447457
currentSegmentOrdinal + EVENT_SEGMENTS_AFTER_CURRENT
448458
));
459+
DevRuntimeLog.add(
460+
"RecordingService",
461+
"Event armed: " + eventBaseName
462+
+ " ordinals " + Math.max(1L, currentSegmentOrdinal - EVENT_SEGMENTS_BEFORE_CURRENT)
463+
+ "-" + (currentSegmentOrdinal + EVENT_SEGMENTS_AFTER_CURRENT));
449464
}
465+
return true;
450466
}
451467

452468
private List<EventCopyJob> collectEventCopyJobsLocked(long completedThroughOrdinal) {
@@ -492,9 +508,19 @@ private void copyEventSegments(EventCopyJob job) {
492508
Log.w(TAG, "Skipping empty event copy job for " + job.eventBaseName);
493509
return;
494510
}
495-
File eventDir = new File(getEventsBaseDir(), job.eventBaseName);
496-
// noinspection ResultOfMethodCallIgnored
497-
eventDir.mkdirs();
511+
File eventsBaseDir = getEventsBaseDir();
512+
if (eventsBaseDir == null) {
513+
DevRuntimeLog.add("RecordingService", "Event copy failed: events base dir unavailable");
514+
Log.e(TAG, "Failed to copy event segments because events base dir is unavailable");
515+
return;
516+
}
517+
File eventDir = new File(eventsBaseDir, job.eventBaseName);
518+
if (!ensureDirectoryExists(eventDir, "event dir")) {
519+
DevRuntimeLog.add("RecordingService", "Event copy failed: mkdir " + eventDir.getAbsolutePath());
520+
Log.e(TAG, "Failed to create event dir " + eventDir.getAbsolutePath());
521+
return;
522+
}
523+
DevRuntimeLog.add("RecordingService", "Event copy: " + job.eventBaseName + " files " + job.baseNames.size());
498524
for (String baseName : job.baseNames) {
499525
copySegmentGroup(DashcamSettingsController.getRecordsBaseDir(this), eventDir, baseName);
500526
}
@@ -603,22 +629,39 @@ private void cleanupOldSegments(File baseDir, int keepSegments, Set<String> prot
603629

604630
private File getEventsBaseDir() {
605631
File dir = new File(DashcamSettingsController.getRecordsBaseDir(this), "events");
606-
// noinspection ResultOfMethodCallIgnored
607-
dir.mkdirs();
608-
return dir;
632+
return ensureDirectoryExists(dir, "events base dir") ? dir : null;
609633
}
610634

611635
private File requireBaseDir() {
612636
File baseDir = DashcamSettingsController.getRecordsBaseDir(this);
613-
// noinspection ResultOfMethodCallIgnored
614-
baseDir.mkdirs();
615-
if (baseDir.exists() && baseDir.canWrite()) {
637+
if (ensureDirectoryExists(baseDir, "records base dir") && baseDir.canWrite()) {
616638
return baseDir;
617639
}
618640
publishStatus(STATUS_ERROR, 0, TOTAL_CAMERAS, "storage not writable");
619641
return null;
620642
}
621643

644+
private boolean ensureDirectoryExists(File dir, String label) {
645+
if (dir == null) {
646+
return false;
647+
}
648+
if (dir.exists()) {
649+
if (dir.isDirectory()) {
650+
return true;
651+
}
652+
Log.e(TAG, label + " exists but is not a directory: " + dir.getAbsolutePath());
653+
return false;
654+
}
655+
if (dir.mkdirs()) {
656+
return true;
657+
}
658+
boolean created = dir.exists() && dir.isDirectory();
659+
if (!created) {
660+
Log.e(TAG, "Failed to create " + label + ": " + dir.getAbsolutePath());
661+
}
662+
return created;
663+
}
664+
622665
private String makeTimestampBase(long epochMs, String pattern) {
623666
return new SimpleDateFormat(pattern, Locale.US).format(epochMs);
624667
}

‎app/src/main/res/values-de/strings.xml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@
107107
<string name="main_button_trigger_event_save">Letzte + nächste Minute speichern</string>
108108
<string name="main_button_record_test_30s">30s Test aufnehmen</string>
109109
<string name="main_button_record_test_running">30s Aufnahme läuft…</string>
110-
<string name="main_event_save_armed">Event-Speicherung aktiviert</string>
111110
<string name="main_event_save_requires_dashcam">Erst die Dashcam-Aufnahme aktivieren</string>
112111
<string name="main_recording_indicator">%1$d/%2$d</string>
113112
<string name="main_recording_starting">REC startet</string>

‎app/src/main/res/values/strings.xml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@
107107
<string name="main_button_trigger_event_save">Save last + next minute</string>
108108
<string name="main_button_record_test_30s">Record 30s Test</string>
109109
<string name="main_button_record_test_running">Recording 30s…</string>
110-
<string name="main_event_save_armed">Event save armed</string>
111110
<string name="main_event_save_requires_dashcam">Enable dashcam recording first</string>
112111
<string name="main_recording_indicator">%1$d/%2$d</string>
113112
<string name="main_recording_starting">REC starting</string>

0 commit comments

Comments
 (0)