Dual Camera App in Flutter/Native

Замовник: AI | Опубліковано: 20.12.2025
Бюджет: 750 $

Task Document: Dual Camera Implementation (Ionic/Capacitor) https://docs.google.com/document/d/1M-yKU-z7tAjm_VahdKxYJcwnS5CP8lC_pGZ1zb9phBk/edit?tab=t.0 DUAL-CAMERA NATIVE MODULE Project Framework: Flutter Module integrated into Ionic App Primary Requirement: Simultaneous Front/Back Camera Video Recording via Deep Link Bridge 1. Required Results & Evidence The developer is responsible for delivering the following three layers of proof before the project is considered complete. These are not sequential milestones, but a unified set of requirements for project acceptance. I. Visual Evidence (Proof of Function) The developer must provide a screen-recorded video (or live demo) demonstrating the following integrated workflow: The Handshake: The Ionic app successfully triggers the Flutter module via a deep link. The Preview: Two live, synchronized camera feeds (Front and Back) are visible on the device screen simultaneously. The Capture: A 15-second recording is initiated and completed. The Return: The Flutter module closes and passes the file path back to the Ionic application's interface. The Result: The recorded video is played back within the Ionic app, showing the burned-in "Picture-in-Picture" or "Split-Screen" layout. II. Technical Evidence (Code Integrity) The developer must provide access to a remote repository for a code review focused on: Bridge Adaptability: The code must demonstrate it can parse parameters from the Ionic Deep Link Bridge (e.g., user_id, capture_mode, max_duration). Hardware Lifecycle: Verification that the dual-camera hardware session is properly terminated when the user returns to Ionic, preventing "Camera in use" errors in other parts of the app. Recording Synthesis: Confirmation that the recording process produces a single, synchronized .mp4 file rather than two separate streams. Code Conventions: Must follow applicable conventions/policies III. Deployment Evidence (QA Verification) The project is only accepted once the deployed version (TestFlight/Firebase/Play Store Console) passes a final audit by the QA team: Stability: The module must launch 10 consecutive times without crashing the host (Ionic) app. Hardware Resilience: The app must correctly identify devices that do not support dual-streaming and provide a single-camera fallback result. Data Loop: The final file path returned to Ionic must be accessible and readable by the Ionic File System plugin for upload. 2. Success Criteria Summary Result Category Performance Standard Sync Accuracy Zero perceptible lag between the audio, front video, and back video. Bridge Logic Flutter must accurately read and return data via the myapp:// custom scheme. UX Fluidity The transition from Ionic to Flutter and back to Ionic must be seamless (under 1 second). Visual Quality Resulting video must maintain at least 30fps for both streams during recording. 3. Suggested Implementation Strategy This section provides technical guidance for the Flutter developer to meet the results defined above. Here are suggested implementation details that may help the developer achieve the results. A. Deep Link & Bridge Adaptation Our existing bridge component is already modeled and provided as a foundation for this project. The developer is responsible for adapting this pre-built bridge to interface correctly with their chosen camera plugin and ensure data parity between environments. B. Dual-Camera Configuration To ensure hardware compatibility and speed: Engine: Utilize camerawesome with SensorConfig.multiple. Resolution: On Android, default to 720p or 1080p. 4K dual-streaming is frequently unsupported on mid-range hardware and causes overheating. Layout: Use a Stack widget. The primary camera (Back) should be the bottom layer, with the secondary camera (Front) as a draggable or fixed Positioned widget on top. C. Capability Safeguards The Flutter code should perform a pre-flight check before opening the camera: iOS: Verify AVCaptureMultiCamSession.isMultiCamSupported. Android: Query PackageManager.FEATURE_CAMERA_CONCURRENT. If these return false, the UI should automatically adapt to a single-camera layout to ensure the app remains functional for all users.