Empezando
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