コンテンツへスキップ

はじめる

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

カメラと写真ライブラリの権限を 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>

必要な権限を 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" />

このプラグインは、Ricoh Theta シリーズのカメラをサポートします。

  • リコー Theta V
  • リコー シータ Z1
  • リコー シータ SC2
  • リコーシータ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>

カメラプラグインを初期化します。

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

WiFi 経由で Ricoh Theta カメラに接続します。

パラムタイプ
optionsConnectOptions
disconnect() => Promise<void>

カメラから切断します。

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

ライブ 360° プレビュー ストリームを開始します。

パラムタイプ
optionsPreviewOptions
stopPreview() => Promise<void>

ライブ プレビュー ストリームを停止します。

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

360° 写真を撮影します。

パラムタイプ
optionsCaptureOptions (オプション)

戻り値: Promise<CaptureResult>

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

360°ビデオの録画を開始します。

パラムタイプ
optionsRecordingOptions (オプション)
stopRecording() => Promise<CaptureResult>

ビデオ録画を停止します。

戻り値: Promise<CaptureResult>

getCameraInfo() => Promise<CameraInfo>

カメラの情報と機能を取得します。

戻り値: Promise<CameraInfo>

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

カメラの露出設定を設定します。

パラムタイプ
optionsExposureOptions
setWhiteBalance(options: WhiteBalanceOptions) => Promise<void>

ホワイトバランスモードを設定します。

パラムタイプ
optionsWhiteBalanceOptions
小道具タイプ説明
ssidstringリコーカメラのWiFi SSID
passwordstringカメラのWiFiパスワード
小道具タイプ説明
containerstringHTML プレビュー コンテナーの要素 ID

キャプチャオプション|小道具 |タイプ |説明 |

Section titled “キャプチャオプション|小道具 |タイプ |説明 |”

| -------------- | ------------------ | ------------------------------------- | | quality | number |画質 (1-100) (オプション) | | saveToGallery | boolean |デバイス ギャラリーに保存 (オプション) |

小道具タイプ説明
maxDurationnumber最大録音時間 (秒単位) (オプション)
qualitystringビデオ品質: ‘高’ | ‘中’ | ‘低’ (オプション)
小道具タイプ説明
filePathstringキャプチャされたファイルへのパス
fileUrlstringファイルにアクセスするための URL
小道具タイプ説明
modelstringカメラのモデル名
serialNumberstringカメラのシリアル番号
firmwareVersionstringファームウェアのバージョン
batteryLevelnumberバッテリー残量 (0-100)
小道具タイプ説明
modestring露出モード: ‘自動’ | ‘マニュアル’ | ‘イソ’
isonumberISO 値 (100、200、400 など) (オプション)
shutternumberシャッタースピード (オプション)
小道具タイプ説明
modestringホワイトバランス: ‘自動’ | ‘日光’ | 「曇り」 | ‘タングステン’ | ‘蛍光’
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();
  • カメラに接続する前に必ずプラグインを初期化してください
  • デバイスがカメラの WiFi ネットワークに接続されていることを確認します。
  • エラー、特に接続障害を適切に処理します
  • プレビューを停止し、完了したらバッテリーを節約するために接続を解除します
  • 長時間の録画セッションの前にカメラのバッテリー残量を確認してください
  • 実際のRicoh Thetaハードウェアでのテスト
  • ストレージの制約に基づいて適切なビデオ品質を使用する
  • カメラの電源が入っていることを確認します
  • WiFi SSID とパスワードが正しいことを確認してください
  • 他のアプリがカメラに接続されていないことを確認してください
  • 接続に失敗した場合はカメラの WiFi 設定をリセット
  • HTML コンテナ要素が存在することを確認します
  • カメラの権限が付与されていることを確認してください
  • 接続が成功した後にプレビューが開始されることを確認します

キャプチャの失敗- 利用可能なストレージ容量を確認する

Section titled “キャプチャの失敗- 利用可能なストレージ容量を確認する”
  • カメラのバッテリー残量が十分であることを確認します
  • カメラがスリープモードになっていないことを確認してください