내용으로 건너뛰기

Getting Started

GitHub

Capgo의 AI-Assisted Setup을 사용하여 플러그인을 설치할 수 있습니다. AI 도구에 Capgo 스킬을 추가하려면 다음 명령어를 사용하세요.

터미널 창
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

다음 명령어를 사용하여 다음 프롬프트를 사용하세요.

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/camera-preview` plugin in my project.

만들기 옵션을 선호하시면, 다음 명령어를 실행하여 플러그인을 설치하고 아래의 플랫폼별 지침을 따르세요.

터미널 창
bun add @capgo/camera-preview
bunx cap sync
import { CameraPreview } from '@capgo/camera-preview';

API 개요

API 개요

카메라 미리보기 시작.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.start({} as CameraPreviewOptions);

카메라 프리뷰를 중지합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.stop();

카메라에서 사진을 캡처합니다.

만약 storeToFile 시작할 때 프리뷰에 true 반환된 value 디바이스의 절대 파일 경로 대신 base64 문자열이 아닌 경우에 사용하세요. getBase64FromFilePath를 사용하여 파일 경로에서 base64 문자열을 얻으세요.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.capture({} as CameraPreviewPictureOptions);

카메라 프리뷰 스트림에서 단일 프레임을 캡처합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.captureSample({} as CameraSampleOptions);

getSupportedFlashModes

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getSupportedFlashModes();

setAspectRatio

__CAPGO_KEEP_3__

__CAPGO_KEEP_4__

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setAspectRatio({} as { aspectRatio: '4:3' | '16:9'; x?: number; y?: number });

getAspectRatio

__CAPGO_KEEP_5__

__CAPGO_KEEP_0__

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getAspectRatio();

setGridMode

__CAPGO_KEEP_0__

__CAPGO_KEEP_7__

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setGridMode({} as { gridMode: GridMode });

카메라 프리뷰 오버레이의 현재 그리드 모드를 가져옵니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getGridMode();

checkPermissions

권한 확인

시스템 대화 없이 카메라 (및 선택적으로 마이크) 권한 상태를 확인합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.checkPermissions();

requestPermissions

권한 요청

카메라 (선택적으로 마이크) 권한을 요청합니다. 권한이 이미 허용되거나 거부된 경우, 현재 상태가 반환됩니다. showSettingsAlert true 인 경우 권한이 거부된 경우, 사용자에게 앱 설정으로 안내하는 플랫폼별 알림이 표시됩니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.requestPermissions();

getHorizontalFov

가로 FOV 가져오기

__CAPGO_KEEP_0__의 수평 시야각을 가져옵니다. 주의: 일부 기기에서는 추정치일 수 있습니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getHorizontalFov();

getSupportedPictureSizes

__CAPGO_KEEP_0__

모든 카메라의 지원된 사진 크기를 가져옵니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getSupportedPictureSizes();

setFlashMode

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__의 플래시 모드를 설정합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setFlashMode({} as { flashMode: CameraPreviewFlashMode | string });

__CAPGO_KEEP_0__을 클립보드에 복사합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.flip();

카메라 프리뷰의 투명도를 설정합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setOpacity({} as CameraOpacityOptions);

stopRecordVideo

녹음 중지

녹음 중지 중인 동영상 녹화를 멈춥니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.stopRecordVideo();

startRecordVideo

녹음 시작

녹음 시작하여 동영상을 녹화합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.startRecordVideo({} as CameraPreviewOptions);

isRunning

녹음 중

카메라 프리뷰가 현재 실행 중인지 확인합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.isRunning();

__CAPGO_KEEP_0__ 카메라 장치 목록을 가져옵니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getAvailableDevices();

__CAPGO_KEEP_3__ 현재 줌 상태를 가져옵니다. (최소/최대 및 현재 렌즈 정보 포함)

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getZoom();

__CAPGO_KEEP_4__ 줌 버튼의 값을 가져옵니다.

  • __CAPGO_KEEP_5__ iOS/Android: 초광각이 사용 가능하면 0.5; 광각이 사용 가능하면 1과 2; 망원경이 사용 가능하면 3
  • __CAPGO_KEEP_6__ Web: 지원하지 않음
import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getZoomButtonValues();

__CAPGO_KEEP_7__ 카메라 줌 레벨을 설정합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setZoom({} as { level: number; ramp?: boolean; autoFocus?: boolean });

현재 플래시 모드를 가져옵니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getFlashMode();

지정된 카메라로 현재 활성 카메라를 Switch합니다. deviceId.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setDeviceId({} as { deviceId: string });

현재 바인드된 카메라 장치의 ID를 가져옵니다. 안드로이드에서 물리 렌즈 요청이 논리 카메라로 백업되면 이 메서드는 바인드된 논리 카메라 ID를 반환합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getDeviceId();

현재 미리보기 크기와 위치를 가져옵니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getPreviewSize();

setPreviewSize

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setPreviewSize({} as { x?: number; y?: number; width: number; height: number });

__CAPGO_KEEP_3__

__CAPGO_KEEP_4__

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setFocus({} as { x: number; y: number });

__CAPGO_KEEP_5__ storeToFile__CAPGO_KEEP_0__

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.deleteFile({} as { path: string });

__CAPGO_KEEP_0__의 안전 영역 인셋을 얻습니다. __CAPGO_KEEP_0__의 방향에 따라 notch/camera cutout 인셋과 현재 방향을 반환합니다. __CAPGO_KEEP_0__ 모드: 상단 인셋 (상단 notch)을 반환합니다. __CAPGO_KEEP_0__ 모드: 왼쪽 인셋 (notch을 옆으로 이동합니다). 이것은 모든 현대 전화기에 있는 cutout 영역 (notch, punch hole, etc.)을 특정합니다.

Android: dp (논리적 픽셀)에서 반환되는 값. iOS: status bar를 제외한 물리적 픽셀에서 반환되는 값 (단순 notch/cutout 크기만).

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getSafeAreaInsets();

__CAPGO_KEEP_0__의 현재 기기 방향을 획득합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getOrientation();

__CAPGO_KEEP_0__의 활성 카메라에서 지원하는 노출 모드를 반환합니다. 모드는 'locked', 'auto', 'continuous', 'custom' 등이 될 수 있습니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getExposureModes();

__CAPGO_KEEP_0__의 현재 노출 모드를 반환합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getExposureMode();

setExposureMode

노출 모드 설정

노출 모드를 설정합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setExposureMode({} as { mode: ExposureMode });

getExposureCompensationRange

노출 보상 범위 가져오기

지원되는 노출 보상 범위 (EV 편차)를 반환합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getExposureCompensationRange();

현재 노출 보상 (EV 편차)를 반환합니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.getExposureCompensation();

setExposureCompensation

노출 보상 설정

노출 보상 (EV 편차)를 설정합니다. 값은 지정된 범위에 클램핑됩니다.

import { CameraPreview } from '@capgo/camera-preview';
await CameraPreview.setExposureCompensation({} as { value: number });

카메라 프리뷰를 시작하기 위한 구성 옵션을 정의합니다.

export interface CameraPreviewOptions {
/**
* The parent element to attach the video preview to.
* @platform web
*/
parent?: string;
/**
* A CSS class name to add to the preview element.
* @platform web
*/
className?: string;
/**
* The width of the preview in pixels. Defaults to the screen width.
* @platform android, ios, web
*/
width?: number;
/**
* The height of the preview in pixels. Defaults to the screen height.
* @platform android, ios, web
*/
height?: number;
/**
* The horizontal origin of the preview, in pixels.
* @platform android, ios
*/
x?: number;
/**
* The vertical origin of the preview, in pixels.
* @platform android, ios
*/
y?: number;
/**
* The aspect ratio of the camera preview, '4:3' or '16:9' or 'fill'.
* Cannot be set if width or height is provided, otherwise the call will be rejected.
* Use setPreviewSize to adjust size after starting.
*
* @since 2.0.0
*/
aspectRatio?: '4:3' | '16:9';
/**
* Controls how the camera preview fills the available space.
* - 'contain': Fits the entire preview within the space, may show letterboxing (default).
* - 'cover': Fills the entire space, may crop edges of the preview.
* @default "contain"
* @platform android, ios, web
*/
aspectMode?: 'cover' | 'contain';
/**
* The grid overlay to display on the camera preview.
* @default "none"
* @since 2.1.0
*/
gridMode?: GridMode;
/**
* Adjusts the y-position to account for safe areas (e.g., notches).
* @platform ios
* @default false
*/
includeSafeAreaInsets?: boolean;
/**
* If true, places the preview behind the webview.
* @platform android
* @default true
*/
toBack?: boolean;
/**
* Bottom padding for the preview, in pixels.
* @platform android, ios
*/
paddingBottom?: number;
/**
* Whether to rotate the preview when the device orientation changes.
* @platform ios
* @default true
*/
rotateWhenOrientationChanged?: boolean;
/**
* The camera to use.
* @default "rear"
*/
position?: CameraPosition | string;
/**
* If true, saves the captured image to a file and returns the file path.
* If false, returns a base64 encoded string.
* @default false
*/
storeToFile?: boolean;
/**
* If true, prevents the plugin from rotating the image based on EXIF data.
* @platform android
* @default false
*/
disableExifHeaderStripping?: boolean;
/**
* If true, disables the audio stream, preventing audio permission requests.
* @default true
*/
disableAudio?: boolean;
/**
* If true, locks the device orientation while the camera is active.
* @platform android
* @default false
*/
lockAndroidOrientation?: boolean;
/**
* If true, allows the camera preview's opacity to be changed.
* @platform android, web
* @default false
*/
enableOpacity?: boolean;
/**
* If true, disables the visual focus indicator when tapping to focus.
* @platform android, ios
* @default false
*/
disableFocusIndicator?: boolean;
/**
* The `deviceId` of the camera to use. If provided, `position` is ignored.
* @platform ios
*/
deviceId?: string;
/**
* On Android, attempts to bind a physical camera directly when `deviceId` refers to a physical lens.
* Disabled by default because OEM support is inconsistent; when false, Android keeps the current logical-camera fallback behavior.
* @default false
* @platform android
*/
enablePhysicalDeviceSelection?: boolean;
/**
* The initial zoom level when starting the camera preview.
* If the requested zoom level is not available, the native plugin will reject.
* @default 1.0
* @platform android, ios
* @since 2.2.0
*/
initialZoomLevel?: number;
/**
* The vertical positioning of the camera preview.
* @default "center"
* @platform android, ios, web
* @since 2.3.0
*/
positioning?: CameraPositioning;
/**
* If true, enables video capture capabilities when the camera starts.
* @default false
* @platform android
* @since 7.11.0
*/
enableVideoMode?: boolean;
/**
* If true, forces the camera to start/restart even if it's already running or busy.
* This will kill the current camera session and start a new one, ignoring all state checks.
* @default false
* @platform android, ios, web
*/
force?: boolean;
/**
* Sets the quality of video for recording.
* Options: 'low', 'medium', 'high'
* @note On Android requires 'enableVideoMode' to be true
* @note Will affect the entire preview stream for iOS
* @platform ios, android
* @default "high"
*/
videoQuality?: 'low' | 'medium' | 'high';
}

복사

export interface CameraPreviewPictureOptions {
/**
* The maximum height of the picture in pixels. The image will be resized to fit within this height while maintaining aspect ratio.
* If not specified the captured image will match the preview's visible area.
*/
height?: number;
/**
* The maximum width of the picture in pixels. The image will be resized to fit within this width while maintaining aspect ratio.
* If not specified the captured image will match the preview's visible area.
*/
width?: number;
/**
* The quality of the captured image, from 0 to 100.
* Does not apply to `.png` format.
* @default 85
*/
quality?: number;
/**
* The format of the captured image.
* @default "jpeg"
*/
format?: PictureFormat;
/**
* If true, the captured image will be saved to the user's gallery.
* @default false
* @since 7.5.0
*/
saveToGallery?: boolean;
/**
* If true, the plugin will attempt to add GPS location data to the image's EXIF metadata.
* This may prompt the user for location permissions.
* @default false
* @since 7.6.0
*/
withExifLocation?: boolean;
/**
* If true, the plugin will embed a timestamp in the top-right corner of the image.
* @default false
* @since 7.17.0
*/
embedTimestamp?: boolean;
/**
* If true, the plugin will embed the current location in the top-right corner of the image.
* Requires `withExifLocation` to be enabled.
* @default false
* @since 7.18.0
*/
embedLocation?: boolean;
/**
* Sets the priority for photo quality vs. capture speed.
* - "speed": Prioritizes faster capture times, may reduce image quality.
* - "balanced": Aims for a balance between quality and speed.
* - "quality": Prioritizes image quality, may reduce capture speed.
* See https://developer.apple.com/documentation/avfoundation/avcapturephotosettings/photoqualityprioritization for details.
*
* @since 7.21.0
* @platform ios
* @default "speed"
*/
photoQualityPrioritization?: 'speed' | 'balanced' | 'quality';
}

ExifData

복사

카메라 프리뷰 옵션 섹션

export interface ExifData {
[key: string]: any;
}

카메라 프리뷰에서 샘플 프레임 캡처를 위한 옵션을 정의합니다.

export interface CameraSampleOptions {
/**
* The quality of the captured sample, from 0 to 100.
* @default 85
*/
quality?: number;
}

카메라의 사용 가능한 플래시 모드입니다. 'torch'는 연속적인 조명 모드입니다.

export type CameraPreviewFlashMode = 'off' | 'on' | 'auto' | 'torch';
export type GridMode = 'none' | '3x3' | '4x4';

PermissionRequestOptions

권한 요청 옵션 섹션
export interface PermissionRequestOptions {
disableAudio?: boolean;
showSettingsAlert?: boolean;
title?: string;
message?: string;
openSettingsButtonTitle?: string;
cancelButtonTitle?: string;
}

CameraPermissionStatus

카메라 권한 상태 섹션
export interface CameraPermissionStatus {
camera: PermissionState;
microphone?: PermissionState;
}

SupportedPictureSizes

SupportedPictureSizes

__CAPGO_KEEP_0__

export interface SupportedPictureSizes {
/** The camera direction ("front" or "rear"). */
facing: string;
/** A list of supported picture sizes for this camera. */
supportedPictureSizes: PictureSize[];
}

CameraOpacityOptions

CameraOpacityOptions

__CAPGO_KEEP_0__

export interface CameraOpacityOptions {
/**
* The opacity percentage, from 0.0 (fully transparent) to 1.0 (fully opaque).
* @default 1.0
*/
opacity?: number;
}

CameraDevice

__CAPGO_KEEP_1__

LensInfo

export interface CameraDevice {
/** A unique identifier for the camera device. */
deviceId: string;
/** A human-readable name for the camera device. */
label: string;
/** The physical position of the camera on the device. */
position: CameraPosition;
/** A list of all available lenses for this camera device. */
lenses: CameraLens[];
/** The overall minimum zoom factor available across all lenses on this device. */
minZoom: number;
/** The overall maximum zoom factor available across all lenses on this device. */
maxZoom: number;
/** Identifies whether the device is a logical camera (composed of multiple physical lenses). */
isLogical: boolean;
}

__CAPGO_KEEP_1__

export interface LensInfo {
/** The focal length of the active lens in millimeters. */
focalLength: number;
/** The device type of the active lens. */
deviceType: DeviceType;
/** The base zoom ratio of the active lens (e.g., 0.5x, 1.0x). */
baseZoomRatio: number;
/** The current digital zoom factor applied on top of the base zoom. */
digitalZoom: number;
}

원본

원본

이 페이지는 플러그인의 src/definitions.tsAPI이 업스트림에서 변경될 때 다시 싱크를 실행하세요.

Getting Started에서 계속

Getting Started에서 계속

Capacitor를 사용하는 경우 Getting Started를 사용하여 native 미디어 및 인터페이스 동작을 계획하고 Using @capgo/camera-preview Using @capgo/camera-preview에서 native 기능을 사용하는 경우 Using @capgo/capacitor-live-activities native 기능을 사용하는 @capgo/capacitor-live-activities에 대해 @capgo/capacitor-live-activities implementation detail을 사용하는 @capgo/capacitor-live-activities에 대해 native 기능을 사용하는 @capgo/capacitor-video-player native 기능을 사용하는 @capgo/capacitor-video-player에 대해, 그리고 @capgo/capacitor-video-player implementation detail을 사용하는 @capgo/capacitor-video-player에 대해