Saltar al contenido

Empezando

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

Agregue permisos de cámara y biblioteca de fotos a su 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>

Agregue los permisos necesarios a su 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" />

Este complemento es compatible con las cámaras de la 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>

Inicialice el complemento de la cámara.

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

Conéctese a una cámara Ricoh Theta a través de WiFi.

ParámetroTipo
optionsConnectOptions
disconnect() => Promise<void>

Desconéctate de la cámara.

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

Inicie una transmisión de vista previa de 360° en vivo.

ParámetroTipo
optionsPreviewOptions
stopPreview() => Promise<void>

Detenga la transmisión de vista previa en vivo.

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

Captura una foto de 360°.

ParámetroTipo
optionsCaptureOptions (opcional)

Devoluciones: Promise<CaptureResult>

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

Comience a grabar video de 360°.

ParámetroTipo
optionsRecordingOptions (opcional)
stopRecording() => Promise<CaptureResult>

Detener la grabación de vídeo.

Devoluciones: Promise<CaptureResult>

getCameraInfo() => Promise<CameraInfo>

Obtenga información y capacidades de la cámara.

Devoluciones: Promise<CameraInfo>

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

Establezca la configuración de exposición de la cámara.

ParámetroTipo
optionsExposureOptions
setWhiteBalance(options: WhiteBalanceOptions) => Promise<void>

Configure el modo de balance de blancos.

ParámetroTipo
optionsWhiteBalanceOptions
ApoyoTipoDescripción
ssidstringSSID WiFi de la cámara Ricoh
passwordstringContraseña WiFi de la cámara
ApoyoTipoDescripción
containerstringHTML ID de elemento para el contenedor de vista previa

Opciones de captura| Apoyo | Tipo | Descripción |

Section titled “Opciones de captura| Apoyo | Tipo | Descripción |”

| -------------- | ------------------ | ------------------------------- | | quality | number | Calidad de imagen (1-100) (opcional) | | saveToGallery | boolean | Guardar en la galería del dispositivo (opcional) |

ApoyoTipoDescripción
maxDurationnumberDuración máxima de grabación en segundos (opcional)
qualitystringCalidad de vídeo: ‘alta’ | ‘medio’ | ‘bajo’ (opcional)
ApoyoTipoDescripción
filePathstringRuta al archivo capturado
fileUrlstringURL para acceder al archivo
ApoyoTipoDescripción
modelstringNombre del modelo de cámara
serialNumberstringNúmero de serie de la cámara
firmwareVersionstringVersión de firmware
batteryLevelnumberNivel de batería (0-100)
ApoyoTipoDescripción
modestringModo de exposición: ‘automático’ | ‘manual’| ‘iso’
isonumberValor ISO (100, 200, 400, etc.) (opcional)
shutternumberVelocidad de obturación (opcional)
ApoyoTipoDescripción
modestringBalance de blancos: ‘automático’ | ‘luz del día’ | ‘nublado’ | ‘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();
  • Siempre inicialice el complemento antes de conectarse a la cámara
  • Asegúrese de que el dispositivo esté conectado a la red WiFi de la cámara
  • Manejar los errores con gracia, especialmente los fallos de conexión.
  • Detenga la vista previa y desconéctese cuando haya terminado para ahorrar batería
  • Verifique el nivel de batería de la cámara antes de largas sesiones de grabación
  • Prueba en hardware Ricoh Theta real
  • Utilice una calidad de vídeo adecuada según las limitaciones de almacenamiento.
  • Verifique que la cámara esté encendida
  • Verifique que el SSID y la contraseña de WiFi sean correctos
  • Asegúrese de que no haya otra aplicación conectada a la cámara
  • Restablecer la configuración WiFi de la cámara si falla la conexión
  • Verificar que el elemento contenedor HTML exista
  • Verifique que se concedan los permisos de la cámara.
  • Asegúrese de que la vista previa se inicie después de una conexión exitosa

Fallos de captura- Verificar el espacio de almacenamiento disponible

Section titled “Fallos de captura- Verificar el espacio de almacenamiento disponible”
  • Verifique que el nivel de batería de la cámara sea suficiente
  • Asegúrese de que la cámara no esté en modo de suspensión