Langsung ke konten

Memulai

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

Tambahkan izin kamera dan photo library ke Info.plist Anda:

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

Tambahkan izin yang diperlukan ke AndroidManifest.xml Anda:

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

Plugin ini mendukung kamera seri 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>

Inisialisasi plugin kamera.

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

Hubungkan ke kamera Ricoh Theta melalui WiFi.

ParamType
optionsConnectOptions
disconnect() => Promise<void>

Putuskan koneksi dari kamera.

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

Mulai streaming preview 360° langsung.

ParamType
optionsPreviewOptions
stopPreview() => Promise<void>

Hentikan streaming preview langsung.

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

Tangkap foto 360°.

ParamType
optionsCaptureOptions (optional)

Returns: Promise<CaptureResult>

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

Mulai merekam video 360°.

ParamType
optionsRecordingOptions (optional)
stopRecording() => Promise<CaptureResult>

Hentikan perekaman video.

Returns: Promise<CaptureResult>

getCameraInfo() => Promise<CameraInfo>

Dapatkan informasi dan kemampuan kamera.

Returns: Promise<CameraInfo>

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

Atur pengaturan exposure kamera.

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

Atur mode white balance.

ParamType
optionsWhiteBalanceOptions
PropTypeDescription
ssidstringWiFi SSID dari kamera Ricoh
passwordstringPassword WiFi dari kamera
PropTypeDescription
containerstringID elemen HTML untuk container preview
PropTypeDescription
qualitynumberKualitas gambar (1-100) (opsional)
saveToGallerybooleanSimpan ke galeri perangkat (opsional)
PropTypeDescription
maxDurationnumberDurasi rekaman maksimum dalam detik (opsional)
qualitystringKualitas video: ‘high’ | ‘medium’ | ‘low’ (opsional)
PropTypeDescription
filePathstringPath ke file yang ditangkap
fileUrlstringURL untuk mengakses file
PropTypeDescription
modelstringNama model kamera
serialNumberstringNomor seri kamera
firmwareVersionstringVersi firmware
batteryLevelnumberLevel baterai (0-100)
PropTypeDescription
modestringMode exposure: ‘auto’ | ‘manual’ | ‘iso’
isonumberNilai ISO (100, 200, 400, dll.) (opsional)
shutternumberKecepatan shutter (opsional)
PropTypeDescription
modestringWhite balance: ‘auto’ | ‘daylight’ | ‘cloudy’ | ‘tungsten’ | ‘fluorescent’
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();
  • Selalu inisialisasi plugin sebelum menghubungkan ke kamera
  • Pastikan perangkat terhubung ke jaringan WiFi kamera
  • Tangani error dengan baik, terutama kegagalan koneksi
  • Hentikan preview dan putuskan koneksi saat selesai untuk menghemat baterai
  • Periksa level baterai kamera sebelum sesi rekaman panjang
  • Test pada hardware Ricoh Theta yang sebenarnya
  • Gunakan kualitas video yang sesuai berdasarkan batasan penyimpanan
  • Verifikasi bahwa kamera dalam keadaan menyala
  • Periksa SSID WiFi dan password sudah benar
  • Pastikan tidak ada aplikasi lain yang terhubung ke kamera
  • Reset pengaturan WiFi kamera jika koneksi gagal
  • Verifikasi elemen container HTML ada
  • Periksa izin kamera telah diberikan
  • Pastikan preview dimulai setelah koneksi berhasil
  • Periksa ruang penyimpanan yang tersedia
  • Verifikasi level baterai kamera cukup
  • Pastikan kamera tidak dalam mode sleep