Empezando
Copy a setup prompt with the install steps and the full markdown guide for this plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-ricoh360-camera-plugin`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/es/docs/plugins/ricoh360-camera/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Instalación
Section titled “Instalación”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 syncConfiguración de la plataforma
Section titled “Configuración de la plataforma”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>Android
Section titled “Android”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" />Dispositivos compatibles
Section titled “Dispositivos compatibles”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
Ejemplo de uso
Section titled “Ejemplo de uso”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 Referencia
Section titled “API Referencia”inicializar()
Section titled “inicializar()”initialize() => Promise<void>Inicialice el complemento de la cámara.
conectar(opciones)
Section titled “conectar(opciones)”connect(options: ConnectOptions) => Promise<void>Conéctese a una cámara Ricoh Theta a través de WiFi.
| Parámetro | Tipo |
|---|---|
options | ConnectOptions |
desconectar()
Section titled “desconectar()”disconnect() => Promise<void>Desconéctate de la cámara.
iniciarVistaPrevia(opciones)
Section titled “iniciarVistaPrevia(opciones)”startPreview(options: PreviewOptions) => Promise<void>Inicie una transmisión de vista previa de 360° en vivo.
| Parámetro | Tipo |
|---|---|
options | PreviewOptions |
detenerVistaPrevia()
Section titled “detenerVistaPrevia()”stopPreview() => Promise<void>Detenga la transmisión de vista previa en vivo.
capturarFoto(¿opciones?)
Section titled “capturarFoto(¿opciones?)”capturePhoto(options?: CaptureOptions) => Promise<CaptureResult>Captura una foto de 360°.
| Parámetro | Tipo |
|---|---|
options | CaptureOptions (opcional) |
Devoluciones: Promise<CaptureResult>
iniciar grabación (¿opciones?)
Section titled “iniciar grabación (¿opciones?)”startRecording(options?: RecordingOptions) => Promise<void>Comience a grabar video de 360°.
| Parámetro | Tipo |
|---|---|
options | RecordingOptions (opcional) |
detener grabación()
Section titled “detener grabación()”stopRecording() => Promise<CaptureResult>Detener la grabación de vídeo.
Devoluciones: Promise<CaptureResult>
obtener información de la cámara()
Section titled “obtener información de la cámara()”getCameraInfo() => Promise<CameraInfo>Obtenga información y capacidades de la cámara.
Devoluciones: Promise<CameraInfo>
establecerExposición(opciones)
Section titled “establecerExposición(opciones)”setExposure(options: ExposureOptions) => Promise<void>Establezca la configuración de exposición de la cámara.
| Parámetro | Tipo |
|---|---|
options | ExposureOptions |
establecerBalanceBlanco(opciones)
Section titled “establecerBalanceBlanco(opciones)”setWhiteBalance(options: WhiteBalanceOptions) => Promise<void>Configure el modo de balance de blancos.
| Parámetro | Tipo |
|---|---|
options | WhiteBalanceOptions |
Interfaces
Section titled “Interfaces”Opciones de conexión
Section titled “Opciones de conexión”| Apoyo | Tipo | Descripción |
|---|---|---|
ssid | string | SSID WiFi de la cámara Ricoh |
password | string | Contraseña WiFi de la cámara |
Opciones de vista previa
Section titled “Opciones de vista previa”| Apoyo | Tipo | Descripción |
|---|---|---|
container | string | HTML 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) |
Opciones de grabación
Section titled “Opciones de grabación”| Apoyo | Tipo | Descripción |
|---|---|---|
maxDuration | number | Duración máxima de grabación en segundos (opcional) |
quality | string | Calidad de vídeo: ‘alta’ | ‘medio’ | ‘bajo’ (opcional) |
CapturaResultado
Section titled “CapturaResultado”| Apoyo | Tipo | Descripción |
|---|---|---|
filePath | string | Ruta al archivo capturado |
fileUrl | string | URL para acceder al archivo |
Información de la cámara
Section titled “Información de la cámara”| Apoyo | Tipo | Descripción |
|---|---|---|
model | string | Nombre del modelo de cámara |
serialNumber | string | Número de serie de la cámara |
firmwareVersion | string | Versión de firmware |
batteryLevel | number | Nivel de batería (0-100) |
Opciones de exposición
Section titled “Opciones de exposición”| Apoyo | Tipo | Descripción |
|---|---|---|
mode | string | Modo de exposición: ‘automático’ | ‘manual’| ‘iso’ |
iso | number | Valor ISO (100, 200, 400, etc.) (opcional) |
shutter | number | Velocidad de obturación (opcional) |
Opciones de balance de blancos
Section titled “Opciones de balance de blancos”| Apoyo | Tipo | Descripción |
|---|---|---|
mode | string | Balance de blancos: ‘automático’ | ‘luz del día’ | ‘nublado’ | ‘tungsteno’ | ‘fluorescente’ |
Ejemplo completo
Section titled “Ejemplo 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();Mejores prácticas
Section titled “Mejores prácticas”- 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.
Solución de problemas
Section titled “Solución de problemas”Problemas de conexión
Section titled “Problemas de conexión”- 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
Vista previa no mostrada
Section titled “Vista previa no mostrada”- 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