The previous code only stripped file:// (double slash) but some paths
come with file:/ (single slash), causing FileNotFoundException.
Fixes RAILBIRD-FRONTEND-1JH
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements HLS-compatible fragmented MP4 recording on Android using
AndroidX Media3 FragmentedMp4Muxer, matching the iOS implementation.
Changes:
- Add FragmentedRecordingManager for fMP4 segment output
- Add ChunkedRecorderInterface to abstract recorder implementations
- Add onInitSegmentReady callback for init segment (init.mp4)
- Update onVideoChunkReady to include segment duration
- RecordingSession now uses FragmentedRecordingManager by default
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace !! operators with proper null checks to prevent
NullPointerExceptions when encodedFormat or muxerContext are null.
This can happen if createNextMuxer is called before
onOutputFormatChanged sets the format.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Prevents crash when an exception with null message is caught and rejected
through the React Native bridge.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* parse string booleans from gradle properties
* Define separate safeExtGetBool function
---------
Co-authored-by: Jonas Thuresson <jonas.thuresson@klarna.com>
* fix: Add extra sanity-checks for `CaptureRequest`
* Update CameraDeviceDetails.kt
* Refactor zoom a bit
* fix: Remove unneeded flash
* Move to AE instead of FLASH control
* Revert "Move to AE instead of FLASH control"
This reverts commit 755689411535803d156a4e84f143d0c9d08c858f.
* Set AE Mode to ON for manual flash control
* fix: Take Orientation into account for `PreviewView`
* Log
* Take aspect ratio into account
* Reorganize code a bit
* Set LANDSCAPE_LEFT as default
* chore: Format
* fix: Only resolve once SurfaceHolder actually resized
* fix: Fix onMeasure not being called for `PreviewView`
* fix: Auto-trigger layout computation on Surface Change
* fix: Add proper LayoutParams to `PreviewView`
* Format