はじめに
-
パッケージをインストール
Terminal window npm i @capgo/camera-previewTerminal window pnpm add @capgo/camera-previewTerminal window yarn add @capgo/camera-previewTerminal window bun add @capgo/camera-preview -
ネイティブプロジェクトと同期
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync -
権限を設定
Info.plistにカメラ使用の説明を追加します:<key>NSCameraUsageDescription</key><string>To take photos and videos</string><key>NSMicrophoneUsageDescription</key><string>To record audio with videos</string><key>NSPhotoLibraryUsageDescription</key><string>To save photos and videos</string>Android
Section titled “Android”AndroidManifest.xmlにカメラ権限を追加します:<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
プラグインをインポートして、そのメソッドを使用してカメラを制御します:
import { CameraPreview } from '@capgo/camera-preview';import { CameraPreviewOptions, CameraPreviewPictureOptions } from '@capgo/camera-preview';
// カメラプレビューを開始const startCamera = async () => { const cameraPreviewOptions: CameraPreviewOptions = { position: 'rear', height: 1920, width: 1080, quality: 50, toBack: false, paddingBottom: 0, rotateWhenOrientationChanged: true, x: 0, y: 0 };
await CameraPreview.start(cameraPreviewOptions);};
// カメラプレビューを停止const stopCamera = async () => { await CameraPreview.stop();};
// 写真を撮るconst takePicture = async () => { const pictureOptions: CameraPreviewPictureOptions = { quality: 90, width: 1920, height: 1080 };
const result = await CameraPreview.capture(pictureOptions); const base64PictureData = result.value;
// base64画像データを使用 console.log(base64PictureData);};
// カメラを切り替えconst flipCamera = async () => { await CameraPreview.flip();};
// フラッシュを制御const setFlashMode = async (mode: 'on' | 'off' | 'auto' | 'torch') => { await CameraPreview.setFlashMode({ flashMode: mode });};
// 動画録画を開始const startRecording = async () => { await CameraPreview.startRecordVideo({ storeToFile: true, fileName: 'myvideo' });};
// 録画を停止const stopRecording = async () => { const result = await CameraPreview.stopRecordVideo(); console.log('Video path:', result.videoFilePath);};APIリファレンス
Section titled “APIリファレンス”start(options)
Section titled “start(options)”カメラプレビューを開始します。
interface CameraPreviewOptions { position?: 'rear' | 'front'; height?: number; width?: number; x?: number; y?: number; toBack?: boolean; paddingBottom?: number; rotateWhenOrientationChanged?: boolean; storeToFile?: boolean; disableExifHeaderStripping?: boolean; enableHighResolution?: boolean; disableAudio?: boolean; lockAndroidOrientation?: boolean; enableOpacity?: boolean; enableZoom?: boolean;}stop()
Section titled “stop()”カメラプレビューを停止します。
capture(options)
Section titled “capture(options)”写真を撮影し、base64エンコードされた文字列として返します。
interface CameraPreviewPictureOptions { height?: number; width?: number; quality?: number;}flip()
Section titled “flip()”フロントカメラとリアカメラを切り替えます。
setFlashMode(options)
Section titled “setFlashMode(options)”フラッシュモードを設定します。
interface CameraPreviewFlashMode { flashMode: 'off' | 'on' | 'auto' | 'torch';}startRecordVideo(options)
Section titled “startRecordVideo(options)”動画録画を開始します。
interface CameraPreviewVideoOptions { storeToFile?: boolean; fileName?: string; width?: number; height?: number; quality?: number; withFlash?: boolean;}stopRecordVideo()
Section titled “stopRecordVideo()”動画録画を停止し、動画ファイルパスを返します。
フォーカス制御
Section titled “フォーカス制御”// フォーカスを設定await CameraPreview.setFocusCoordinate({ x: 100, y: 100});
// サポートされているフォーカスモードを取得const focusModes = await CameraPreview.getFocusModes();
// フォーカスモードを設定await CameraPreview.setFocusMode({ focusMode: 'continuous-picture'});// 最大ズームを取得const maxZoom = await CameraPreview.getMaxZoom();
// ズームを設定await CameraPreview.setZoom({ zoom: 2.0});
// 現在のズームを取得const currentZoom = await CameraPreview.getZoom();// 露出補正範囲を取得const range = await CameraPreview.getExposureCompensationRange();
// 露出補正を設定await CameraPreview.setExposureCompensation({ exposureCompensation: 0.5});ベストプラクティス
Section titled “ベストプラクティス”-
最初に権限をリクエスト
import { Camera } from '@capacitor/camera';const requestPermissions = async () => {const permissions = await Camera.requestPermissions();if (permissions.camera === 'granted') {// カメラプレビューを開始}}; -
向きの変更を処理 プレビューを自動的に調整するには、
rotateWhenOrientationChanged: trueを設定します。 -
パフォーマンスの最適化
- 適切な解像度設定を使用
- 使用していないときはプレビューを停止
- 必要のない機能を無効にする
-
エラーハンドリング
try {await CameraPreview.start(options);} catch (error) {console.error('Failed to start camera:', error);}
プラットフォームノート
Section titled “プラットフォームノート”- iOS 10.0+が必要
- AVFoundationフレームワークを使用
- ハードウェアアクセラレーションサポート
Android
Section titled “Android”- Android 5.0(API 21)+が必要
- Camera2 APIを使用
- デバイスの機能に基づいて様々なカメラ機能をサポート