Vai al contenuto

Iniziare

Terminal window
npm install @capgo/capacitor-ricoh360-camera
npx cap sync

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>

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" />

Questo plugin supporta le fotocamere della serie Ricoh Theta:

  • Ricoh Theta V
  • Ricoh Theta Z1
  • Ricoh Theta SC2
  • Ricoh Theta X
import { Ricoh360Camera } from '@capgo/capacitor-ricoh360-camera';
// Initialize camera connection
await Ricoh360Camera.initialize();
// Connect to Ricoh Theta camera via WiFi
await Ricoh360Camera.connect({
ssid: 'THETAYL12345678',
password: '12345678'
});
// Start live preview
await Ricoh360Camera.startPreview({
container: 'preview-container' // ID of HTML element
});
// Capture a 360° photo
const result = await Ricoh360Camera.capturePhoto();
console.log('Photo saved:', result.filePath);
// Start recording 360° video
await Ricoh360Camera.startRecording();
// Stop recording after some time
setTimeout(async () => {
const video = await Ricoh360Camera.stopRecording();
console.log('Video saved:', video.filePath);
}, 10000);
// Stop preview
await Ricoh360Camera.stopPreview();
// Disconnect from camera
await Ricoh360Camera.disconnect();
initialize() => Promise<void>

Inizializza il plug-in della fotocamera.

connect(options: ConnectOptions) => Promise<void>

Connettiti a una fotocamera Ricoh Theta tramite WiFi.

ParametroDigitare
optionsConnectOptions
disconnect() => Promise<void>

Disconnettersi dalla fotocamera.

startPreview(options: PreviewOptions) => Promise<void>

Avvia lo streaming di anteprima dal vivo a 360°.

ParametroDigitare
optionsPreviewOptions
stopPreview() => Promise<void>

Interrompi lo streaming di anteprima dal vivo.

capturePhoto(options?: CaptureOptions) => Promise<CaptureResult>

Scatta una foto a 360°.

ParametroDigitare
optionsCaptureOptions (facoltativo)

Resi: Promise<CaptureResult>

startRecording(options?: RecordingOptions) => Promise<void>

Inizia a registrare video a 360°.

ParametroDigitare
optionsRecordingOptions (facoltativo)
stopRecording() => Promise<CaptureResult>

Interrompe la registrazione video.

Resi: Promise<CaptureResult>

getCameraInfo() => Promise<CameraInfo>

Ottieni informazioni e funzionalità della fotocamera.

Resi: Promise<CameraInfo>

setExposure(options: ExposureOptions) => Promise<void>

Configura le impostazioni di esposizione della fotocamera.

ParametroDigitare
optionsExposureOptions
setWhiteBalance(options: WhiteBalanceOptions) => Promise<void>

Imposta la modalità di bilanciamento del bianco.

ParametroDigitare
optionsWhiteBalanceOptions
PropDigitareDescrizione
ssidstringSSID WiFi della fotocamera Ricoh
passwordstringPassword WiFi della fotocamera
PropDigitareDescrizione
containerstringID 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) |

PropDigitareDescrizione
maxDurationnumberDurata massima della registrazione in secondi (opzionale)
qualitystringQualità video: ‘alta’ | ‘medio’ | ‘basso’ (facoltativo)
PropDigitareDescrizione
filePathstringPercorso del file catturato
fileUrlstringURL per accedere al file
PropDigitareDescrizione
modelstringNome del modello della fotocamera
serialNumberstringNumero di serie della fotocamera
firmwareVersionstringVersione firmware
batteryLevelnumberLivello della batteria (0-100)
PropDigitareDescrizione
modestringModalità di esposizione: ‘auto’ | ‘manuale’ | ‘iso’
isonumberValore ISO (100, 200, 400, ecc.) (opzionale)
shutternumberVelocità dell’otturatore (opzionale)
PropDigitareDescrizione
modestringBilanciamento del bianco: ‘auto’ | ‘luce del giorno’ | ‘nuvoloso’ | ‘tungsteno’ | ‘fluorescente’
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);
}
}
}
// Usage
const camera = new Camera360Controller();
await camera.setup();
await camera.takePhoto();
await camera.recordVideo(10); // 10 seconds
await camera.cleanup();
  • 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
  • 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
  • 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