Camera plugin for NativePHP Mobile providing photo capture, video recording, and gallery picker functionality.
The Camera API provides access to the device's camera for taking photos, recording videos, and selecting media from the gallery.
composer require nativephp/mobile-camerause Native\Mobile\Facades\Camera;
// Take a photo
Camera::getPhoto();
// Record a video
Camera::recordVideo();
// Record with max duration
Camera::recordVideo(['maxDuration' => 30]);
// Using fluent API
Camera::recordVideo()
->maxDuration(60)
->id('my-video-123')
->start();
// Pick images from gallery
Camera::pickImages('images', false); // Single image
Camera::pickImages('images', true); // Multiple images
Camera::pickImages('all', true); // Any media typeimport { camera, on, off, Events } from '#nativephp';
// Take a photo
await camera.getPhoto();
// With identifier for tracking
await camera.getPhoto()
.id('profile-pic');
// Record video
await camera.recordVideo()
.maxDuration(60);
// Pick images
await camera.pickImages()
.images()
.multiple()
.maxItems(5);Fired when a photo is taken with the camera.
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);
}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);
});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
Fired when video recording is cancelled by the user.
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);
}
}Set the maximum recording duration in seconds.
Set a unique identifier for this recording to correlate with events.
Set a custom event class to dispatch when recording completes.
Store the recorder's ID in the session for later retrieval.
Explicitly start the video recording.
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
- 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