Skip to content

Commit 7870330

Browse files
radko93claude
andauthored
fix: Treat ERROR_SOURCE_INACTIVE as a successful recording finish (don't discard a valid file) (#4042)
fix(android): treat ERROR_SOURCE_INACTIVE as a successful finish CameraX finalizes a valid file on ERROR_SOURCE_INACTIVE (the frames recorded before the source went inactive — e.g. the Activity is stopped/destroyed mid-recording), unlike ERROR_NO_VALID_DATA. Routing it to onRecordingError discards usable footage, so map it to onRecordingFinished(STOPPED) instead, matching expo-camera's handling. ERROR_NO_VALID_DATA stays fatal. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 7e369fb commit 7870330

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

  • packages/react-native-vision-camera/android/src/main/java/com/margelo/nitro/camera/hybrids/recording

packages/react-native-vision-camera/android/src/main/java/com/margelo/nitro/camera/hybrids/recording/HybridVideoRecorder.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ class HybridVideoRecorder(
7777
VideoRecordEvent.Finalize.ERROR_NONE -> RecordingFinishedReason.STOPPED
7878
VideoRecordEvent.Finalize.ERROR_DURATION_LIMIT_REACHED -> RecordingFinishedReason.MAX_DURATION_REACHED
7979
VideoRecordEvent.Finalize.ERROR_FILE_SIZE_LIMIT_REACHED -> RecordingFinishedReason.MAX_FILE_SIZE_REACHED
80+
// Source went inactive (e.g. Activity stopped mid-recording). Unlike
81+
// ERROR_NO_VALID_DATA, CameraX still finalizes a valid file, so keep it.
82+
VideoRecordEvent.Finalize.ERROR_SOURCE_INACTIVE -> RecordingFinishedReason.STOPPED
8083
else -> null
8184
}
8285
if (finishReason != null) {

0 commit comments

Comments
 (0)