#Camera Plugin for NativePHP Mobile
Camera plugin for NativePHP Mobile providing photo capture, video recording, and gallery picker functionality.
#Overview
The Camera API provides access to the device's camera for taking photos, recording videos, and selecting media from the gallery.
#Installation
composer require nativephp/mobile-camera
#Usage
#PHP (Livewire/Blade)
use Native\Mobile\Facades\Camera; // Take a photoCamera::getPhoto(); // Record a videoCamera::recordVideo(); // Record with max durationCamera::recordVideo(['maxDuration' => 30]); // Using fluent APICamera::recordVideo() ->maxDuration(60) ->id('my-video-123') ->start(); // Pick images from galleryCamera::pickImages('images', false); // Single imageCamera::pickImages('images', true); // Multiple imagesCamera::pickImages('all', true); // Any media type
#JavaScript (Vue/React/Inertia)
import { camera, on, off, Events } from '#nativephp'; // Take a photoawait camera.getPhoto(); // With identifier for trackingawait camera.getPhoto() .id('profile-pic'); // Record videoawait camera.recordVideo() .maxDuration(60); // Pick imagesawait camera.pickImages() .images() .multiple() .maxItems(5);
#Events
#PhotoTaken
Fired when a photo is taken with the camera.
PHP
use Native\Mobile\Attributes\OnNative;use Native\Mobile\Events\Camera\PhotoTaken; #[OnNative(PhotoTaken::class)]public function handlePhotoTaken(string $path){ // Process the captured photo $this->processPhoto($path);}
Vue
import { on, off, Events } from '#nativephp';import { ref, onMounted, onUnmounted } from 'vue'; const photoPath = ref(''); const handlePhotoTaken = (payload) => { photoPath.value = payload.path; processPhoto(payload.path);}; onMounted(() => { on(Events.Camera.PhotoTaken, handlePhotoTaken);}); onUnmounted(() => { off(Events.Camera.PhotoTaken, handlePhotoTaken);});
#VideoRecorded
Fired when a video is successfully recorded.
Payload:
string $path- File path to the recorded videostring $mimeType- Video MIME type (default:'video/mp4')?string $id- Optional identifier if set viaid()method
#VideoCancelled
Fired when video recording is cancelled by the user.
#MediaSelected
Fired when media is selected from the gallery.
use Native\Mobile\Attributes\OnNative;use Native\Mobile\Events\Gallery\MediaSelected; #[OnNative(MediaSelected::class)]public function handleMediaSelected($success, $files, $count){ foreach ($files as $file) { $this->processMedia($file); }}
#PendingVideoRecorder API
#maxDuration(int $seconds)
Set the maximum recording duration in seconds.
#id(string $id)
Set a unique identifier for this recording to correlate with events.
#event(string $eventClass)
Set a custom event class to dispatch when recording completes.
#remember()
Store the recorder's ID in the session for later retrieval.
#start()
Explicitly start the video recording.
#Storage Locations
Photos:
- Android: App cache directory at
{cache}/captured.jpg - iOS: Application Support at
~/Library/Application Support/Photos/captured.jpg
Videos:
- Android: App cache directory at
{cache}/video_{timestamp}.mp4 - iOS: Application Support at
~/Library/Application Support/Videos/captured_video_{timestamp}.mp4
#Notes
- Permissions: You must enable the
camerapermission inconfig/nativephp.phpto use camera features - If permission is denied, camera functions will fail silently
- Camera permission is required for photos, videos, AND QR/barcode scanning
- File formats: JPEG for photos, MP4 for videos