Iniziare
Installazione
Section titled “Installazione”npm install @capgo/capacitor-ricoh360-cameranpx cap syncyarn add @capgo/capacitor-ricoh360-cameranpx cap syncpnpm add @capgo/capacitor-ricoh360-cameranpx cap syncbun add @capgo/capacitor-ricoh360-cameranpx cap syncConfigurazione della piattaforma
Section titled “Configurazione della piattaforma”Aggiungi le autorizzazioni per fotocamera e libreria di foto al tuo Info.plist:
<key>NSCameraUsageDescription</key><string>This app needs access to the camera to capture 360° photos and videos</string><key>NSPhotoLibraryAddUsageDescription</key><string>This app needs access to save 360° photos and videos to your library</string>Android
Section titled “Android”Aggiungi le autorizzazioni richieste al tuo AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />Dispositivi supportati
Section titled “Dispositivi supportati”Questo plugin supporta le fotocamere della serie Ricoh Theta:
- Ricoh Theta V
- Ricoh Theta Z1
- Ricoh Theta SC2
- Ricoh Theta X
Esempio di utilizzo
Section titled “Esempio di utilizzo”import { Ricoh360Camera } from '@capgo/capacitor-ricoh360-camera';
// Initialize camera connectionawait Ricoh360Camera.initialize();
// Connect to Ricoh Theta camera via WiFiawait Ricoh360Camera.connect({ ssid: 'THETAYL12345678', password: '12345678'});
// Start live previewawait Ricoh360Camera.startPreview({ container: 'preview-container' // ID of HTML element});
// Capture a 360° photoconst result = await Ricoh360Camera.capturePhoto();console.log('Photo saved:', result.filePath);
// Start recording 360° videoawait Ricoh360Camera.startRecording();
// Stop recording after some timesetTimeout(async () => { const video = await Ricoh360Camera.stopRecording(); console.log('Video saved:', video.filePath);}, 10000);
// Stop previewawait Ricoh360Camera.stopPreview();
// Disconnect from cameraawait Ricoh360Camera.disconnect();API Riferimento
Section titled “API Riferimento”inizializza()
Section titled “inizializza()”initialize() => Promise<void>Inizializza il plug-in della fotocamera.
connetti(opzioni)
Section titled “connetti(opzioni)”connect(options: ConnectOptions) => Promise<void>Connettiti a una fotocamera Ricoh Theta tramite WiFi.
| Parametro | Digitare |
|---|---|
options | ConnectOptions |
disconnetti()
Section titled “disconnetti()”disconnect() => Promise<void>Disconnettersi dalla fotocamera.
startAnteprima(opzioni)
Section titled “startAnteprima(opzioni)”startPreview(options: PreviewOptions) => Promise<void>Avvia lo streaming di anteprima dal vivo a 360°.
| Parametro | Digitare |
|---|---|
options | PreviewOptions |
fermaAnteprima()
Section titled “fermaAnteprima()”stopPreview() => Promise<void>Interrompi lo streaming di anteprima dal vivo.
cattura foto(opzioni?)
Section titled “cattura foto(opzioni?)”capturePhoto(options?: CaptureOptions) => Promise<CaptureResult>Scatta una foto a 360°.
| Parametro | Digitare |
|---|---|
options | CaptureOptions (facoltativo) |
Resi: Promise<CaptureResult>
avvia la registrazione (opzioni?)
Section titled “avvia la registrazione (opzioni?)”startRecording(options?: RecordingOptions) => Promise<void>Inizia a registrare video a 360°.
| Parametro | Digitare |
|---|---|
options | RecordingOptions (facoltativo) |
interrompi la registrazione()
Section titled “interrompi la registrazione()”stopRecording() => Promise<CaptureResult>Interrompe la registrazione video.
Resi: Promise<CaptureResult>
getCameraInfo()
Section titled “getCameraInfo()”getCameraInfo() => Promise<CameraInfo>Ottieni informazioni e funzionalità della fotocamera.
Resi: Promise<CameraInfo>
impostaEsposizione(opzioni)
Section titled “impostaEsposizione(opzioni)”setExposure(options: ExposureOptions) => Promise<void>Configura le impostazioni di esposizione della fotocamera.
| Parametro | Digitare |
|---|---|
options | ExposureOptions |
impostaBilanciaBianco(opzioni)
Section titled “impostaBilanciaBianco(opzioni)”setWhiteBalance(options: WhiteBalanceOptions) => Promise<void>Imposta la modalità di bilanciamento del bianco.
| Parametro | Digitare |
|---|---|
options | WhiteBalanceOptions |
Interfacce
Section titled “Interfacce”Opzioni di connessione
Section titled “Opzioni di connessione”| Prop | Digitare | Descrizione |
|---|---|---|
ssid | string | SSID WiFi della fotocamera Ricoh |
password | string | Password WiFi della fotocamera |
Opzioni di anteprima
Section titled “Opzioni di anteprima”| Prop | Digitare | Descrizione |
|---|---|---|
container | string | ID elemento HTML per il contenitore di anteprima |
Opzioni di cattura| Prop | Digitare | Descrizione |
Section titled “Opzioni di cattura| Prop | Digitare | Descrizione |”| -------------- | ------------------ | ------------------------------------- |
| quality | number | Qualità immagine (1-100) (opzionale) |
| saveToGallery | boolean | Salva nella galleria del dispositivo (facoltativo) |
Opzioni di registrazione
Section titled “Opzioni di registrazione”| Prop | Digitare | Descrizione |
|---|---|---|
maxDuration | number | Durata massima della registrazione in secondi (opzionale) |
quality | string | Qualità video: ‘alta’ | ‘medio’ | ‘basso’ (facoltativo) |
RisultatoCattura
Section titled “RisultatoCattura”| Prop | Digitare | Descrizione |
|---|---|---|
filePath | string | Percorso del file catturato |
fileUrl | string | URL per accedere al file |
Informazioni sulla fotocamera
Section titled “Informazioni sulla fotocamera”| Prop | Digitare | Descrizione |
|---|---|---|
model | string | Nome del modello della fotocamera |
serialNumber | string | Numero di serie della fotocamera |
firmwareVersion | string | Versione firmware |
batteryLevel | number | Livello della batteria (0-100) |
Opzioni di esposizione
Section titled “Opzioni di esposizione”| Prop | Digitare | Descrizione |
|---|---|---|
mode | string | Modalità di esposizione: ‘auto’ | ‘manuale’ | ‘iso’ |
iso | number | Valore ISO (100, 200, 400, ecc.) (opzionale) |
shutter | number | Velocità dell’otturatore (opzionale) |
Opzioni bilanciamento del bianco
Section titled “Opzioni bilanciamento del bianco”| Prop | Digitare | Descrizione |
|---|---|---|
mode | string | Bilanciamento del bianco: ‘auto’ | ‘luce del giorno’ | ‘nuvoloso’ | ‘tungsteno’ | ‘fluorescente’ |
Esempio completo
Section titled “Esempio completo”import { Ricoh360Camera } from '@capgo/capacitor-ricoh360-camera';
class Camera360Controller { async setup() { try { // Initialize await Ricoh360Camera.initialize();
// Connect to camera await Ricoh360Camera.connect({ ssid: 'THETAYL12345678', password: '12345678' });
// Get camera info const info = await Ricoh360Camera.getCameraInfo(); console.log('Connected to:', info.model); console.log('Battery level:', info.batteryLevel + '%');
// Configure exposure await Ricoh360Camera.setExposure({ mode: 'auto' });
// Configure white balance await Ricoh360Camera.setWhiteBalance({ mode: 'auto' });
// Start preview await Ricoh360Camera.startPreview({ container: 'camera-preview' });
} catch (error) { console.error('Failed to setup camera:', error); } }
async takePhoto() { try { const result = await Ricoh360Camera.capturePhoto({ quality: 95, saveToGallery: true }); console.log('Photo captured:', result.filePath); return result; } catch (error) { console.error('Failed to capture photo:', error); } }
async recordVideo(durationSeconds: number) { try { // Start recording await Ricoh360Camera.startRecording({ maxDuration: durationSeconds, quality: 'high' });
console.log('Recording started...');
// Stop after duration setTimeout(async () => { const result = await Ricoh360Camera.stopRecording(); console.log('Video saved:', result.filePath); }, durationSeconds * 1000);
} catch (error) { console.error('Failed to record video:', error); } }
async cleanup() { try { await Ricoh360Camera.stopPreview(); await Ricoh360Camera.disconnect(); console.log('Camera disconnected'); } catch (error) { console.error('Failed to cleanup:', error); } }}
// Usageconst camera = new Camera360Controller();await camera.setup();await camera.takePhoto();await camera.recordVideo(10); // 10 secondsawait camera.cleanup();Migliori pratiche
Section titled “Migliori pratiche”- Inizializzare sempre il plugin prima di collegarlo alla fotocamera
- Assicurati che il dispositivo sia connesso alla rete WiFi della fotocamera
- Gestire gli errori con garbo, in particolare gli errori di connessione
- Interrompi l’anteprima e disconnettiti al termine per risparmiare batteria
- Controllare il livello della batteria della fotocamera prima di lunghe sessioni di registrazione
- Test su hardware Ricoh Theta reale
- Utilizzare una qualità video appropriata in base ai vincoli di archiviazione
Risoluzione dei problemi
Section titled “Risoluzione dei problemi”Problemi di connessione
Section titled “Problemi di connessione”- Verificare che la fotocamera sia accesa
- Controlla che l’SSID WiFi e la password siano corretti
- Assicurati che nessun’altra app sia collegata alla fotocamera
- Ripristina le impostazioni WiFi della fotocamera se la connessione non riesce
Anteprima non visualizzata
Section titled “Anteprima non visualizzata”- Verifica che l’elemento contenitore HTML esista
- Controlla che le autorizzazioni della fotocamera siano concesse
- Assicurarsi che l’anteprima venga avviata dopo la connessione riuscita
Acquisizione fallita- Controlla lo spazio di archiviazione disponibile
Section titled “Acquisizione fallita- Controlla lo spazio di archiviazione disponibile”- Verificare che il livello della batteria della fotocamera sia sufficiente
- Assicurarsi che la fotocamera non sia in modalità di sospensione