Iniziare
-
Installa il pacchetto
Terminal window npm i @capgo/camera-previewTerminal window pnpm add @capgo/camera-previewTerminal window yarn add @capgo/camera-previewTerminal window bun add @capgo/camera-preview -
Sincronizza con i progetti nativi
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync -
Configura i permessi
Aggiungi la descrizione dell’uso della fotocamera al tuo
Info.plist:<key>NSCameraUsageDescription</key><string>Per scattare foto e video</string><key>NSMicrophoneUsageDescription</key><string>Per registrare audio con i video</string><key>NSPhotoLibraryUsageDescription</key><string>Per salvare foto e video</string>Android
Section titled “Android”Aggiungi i permessi della fotocamera al tuo
AndroidManifest.xml:<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Utilizzo
Section titled “Utilizzo”Importa il plugin e usa i suoi metodi per controllare la fotocamera:
import { CameraPreview } from '@capgo/camera-preview';import { CameraPreviewOptions, CameraPreviewPictureOptions } from '@capgo/camera-preview';
// Avvia anteprima fotocameraconst startCamera = async () => { const cameraPreviewOptions: CameraPreviewOptions = { position: 'rear', height: 1920, width: 1080, quality: 50, toBack: false, paddingBottom: 0, rotateWhenOrientationChanged: true, x: 0, y: 0 };
await CameraPreview.start(cameraPreviewOptions);};
// Ferma anteprima fotocameraconst stopCamera = async () => { await CameraPreview.stop();};
// Scatta una fotoconst takePicture = async () => { const pictureOptions: CameraPreviewPictureOptions = { quality: 90, width: 1920, height: 1080 };
const result = await CameraPreview.capture(pictureOptions); const base64PictureData = result.value;
// Usa i dati immagine base64 console.log(base64PictureData);};
// Cambia fotocameraconst flipCamera = async () => { await CameraPreview.flip();};
// Controlla flashconst setFlashMode = async (mode: 'on' | 'off' | 'auto' | 'torch') => { await CameraPreview.setFlashMode({ flashMode: mode });};
// Avvia registrazione videoconst startRecording = async () => { await CameraPreview.startRecordVideo({ storeToFile: true, fileName: 'myvideo' });};
// Ferma registrazioneconst stopRecording = async () => { const result = await CameraPreview.stopRecordVideo(); console.log('Percorso video:', result.videoFilePath);};Riferimento API
Section titled “Riferimento API”start(options)
Section titled “start(options)”Avvia l’anteprima della fotocamera.
interface CameraPreviewOptions { position?: 'rear' | 'front'; height?: number; width?: number; x?: number; y?: number; toBack?: boolean; paddingBottom?: number; rotateWhenOrientationChanged?: boolean; storeToFile?: boolean; disableExifHeaderStripping?: boolean; enableHighResolution?: boolean; disableAudio?: boolean; lockAndroidOrientation?: boolean; enableOpacity?: boolean; enableZoom?: boolean;}stop()
Section titled “stop()”Ferma l’anteprima della fotocamera.
capture(options)
Section titled “capture(options)”Scatta una foto e la restituisce come stringa codificata in base64.
interface CameraPreviewPictureOptions { height?: number; width?: number; quality?: number;}flip()
Section titled “flip()”Cambia tra fotocamera frontale e posteriore.
setFlashMode(options)
Section titled “setFlashMode(options)”Imposta la modalità flash.
interface CameraPreviewFlashMode { flashMode: 'off' | 'on' | 'auto' | 'torch';}startRecordVideo(options)
Section titled “startRecordVideo(options)”Avvia la registrazione video.
interface CameraPreviewVideoOptions { storeToFile?: boolean; fileName?: string; width?: number; height?: number; quality?: number; withFlash?: boolean;}stopRecordVideo()
Section titled “stopRecordVideo()”Ferma la registrazione video e restituisce il percorso del file video.
Funzionalità Avanzate
Section titled “Funzionalità Avanzate”Controllo Focus
Section titled “Controllo Focus”// Imposta focusawait CameraPreview.setFocusCoordinate({ x: 100, y: 100});
// Ottieni modalità focus supportateconst focusModes = await CameraPreview.getFocusModes();
// Imposta modalità focusawait CameraPreview.setFocusMode({ focusMode: 'continuous-picture'});Controllo Zoom
Section titled “Controllo Zoom”// Ottieni zoom massimoconst maxZoom = await CameraPreview.getMaxZoom();
// Imposta zoomawait CameraPreview.setZoom({ zoom: 2.0});
// Ottieni zoom correnteconst currentZoom = await CameraPreview.getZoom();Controllo Esposizione
Section titled “Controllo Esposizione”// Ottieni range compensazione esposizioneconst range = await CameraPreview.getExposureCompensationRange();
// Imposta compensazione esposizioneawait CameraPreview.setExposureCompensation({ exposureCompensation: 0.5});Best Practices
Section titled “Best Practices”-
Richiedi prima i permessi
import { Camera } from '@capacitor/camera';const requestPermissions = async () => {const permissions = await Camera.requestPermissions();if (permissions.camera === 'granted') {// Avvia anteprima fotocamera}}; -
Gestisci i cambiamenti di orientamento Imposta
rotateWhenOrientationChanged: trueper regolare automaticamente l’anteprima. -
Ottimizza le prestazioni
- Usa impostazioni di risoluzione appropriate
- Ferma l’anteprima quando non in uso
- Disabilita le funzionalità che non ti servono
-
Gestione errori
try {await CameraPreview.start(options);} catch (error) {console.error('Impossibile avviare fotocamera:', error);}
Note Piattaforma
Section titled “Note Piattaforma”- Richiede iOS 10.0+
- Usa framework AVFoundation
- Accelerazione hardware supportata
Android
Section titled “Android”- Richiede Android 5.0 (API 21)+
- Usa Camera2 API
- Supporta varie funzionalità fotocamera basate sulle capacità del dispositivo