--- id: api title: Work in progress --- ## Props Index [**wip**] - [`zoom`](API.md#zoom) - [`maxZoom`](API.md#maxZoom) - [`type`](API.md#type) - [`cameraId`](API.md#cameraId) - [`flashMode`](API.md#flashMode) - [`exposure`](API.md#exposure) - [`whiteBalance`](API.md#whiteBalance) - [`autoFocus`](API.md#autoFocus) - [`ratio`](API.md#ratio) - [`focusDepth`](API.md#focusDepth) - [`onMountError`](API.md#onMountError) - [`onCameraReady`](API.md#onCameraReady) ## Methods Index - [`takePictureAsync`](API.md#takePictureAsync()) - [`recordAsync`](API.md#recordAsync) - [`refreshAuthorizationStatus`](API.md#refreshAuthorizationStatus) - [`stopRecording`](API.md#stopRecording) - [`pausePreview`](API.md#pausePreview) - [`resumePreview`](API.md#resumePreview) - [`getAvailablePictureSizes`](API.md#getAvailablePictureSizes) - [`getSupportedRatiosAsync`](API.md#getSupportedRatiosAsync) - [`isRecording`](API.md#isRecording) ## Props --- ### `zoom` This property specifies the zoom value of the camera. Ranges from 0 to 1. Default to 0. | Type | Default Value | | ---- | -------- | | number | 0 | --- ### `maxZoom` The maximum zoom value of the camera. Defaults to 0. | Type | Default Value | | ---- | -------- | | number | 0 | --- ### `type` This property defines which camera on the phone the component is using. Possible values: - `front` - `back` | Type | Default Value | | ---- | -------- | | number | 'back' | --- ### `cameraId` For selecting from multiple cameras on Android devices. See [2492](https://github.com/react-native-community/react-native-camera/pull/2492) for more info. Can be retrieved with `getCameraIds()` | Type | Default Value | Platform | | ---- | -------- | -------- | | String | `null` | Android | --- ### `flashMode` Determines the state of the camera flash. Has the following possible states. ```off: '1', on: 'auto', auto: 'torch', torch: 'off' ``` | Type | Default Value | | ---- | -------- | | object | `{ off: 1 }` | --- ## Methods ## takePictureAsync() Returns a promise with TakePictureResponse. ### Method type ```ts takePictureAsync(options?: TakePictureOptions): Promise; ``` ```ts interface TakePictureOptions { quality?: number; orientation?: keyof Orientation | OrientationNumber; base64?: boolean; exif?: boolean; width?: number; mirrorImage?: boolean; doNotSave?: boolean; pauseAfterCapture?: boolean; writeExif?: boolean | { [name: string]: any }; /** Android only */ fixOrientation?: boolean; /** iOS only */ forceUpOrientation?: boolean; } interface TakePictureResponse { width: number; height: number; uri: string; base64?: string; exif?: { [name: string]: any }; pictureOrientation: number; deviceOrientation: number; } ``` ### Usage example ```js takePicture = async () => { if (this.camera) { const data = await this.camera.takePictureAsync(); console.warn('takePictureResponse ', data); } }; ``` --- ## recordAsync() Returns a promise with RecordResponse. ### Method type ```ts recordAsync(options?: RecordOptions): Promise; ``` ```ts interface RecordOptions { quality?: keyof VideoQuality; orientation?: keyof Orientation | OrientationNumber; maxDuration?: number; maxFileSize?: number; mute?: boolean; mirrorVideo?: boolean; path?: string; videoBitrate?: number; /** iOS only */ codec?: keyof VideoCodec | VideoCodec[keyof VideoCodec]; } interface RecordResponse { /** Path to the video saved on your app's cache directory. */ uri: string; videoOrientation: number; deviceOrientation: number; isRecordingInterrupted: boolean; /** iOS only */ codec: VideoCodec[keyof VideoCodec]; } ``` ### Usage example ```js takeVideo = async () => { if (this.camera) { try { const promise = this.camera.recordAsync(this.state.recordOptions); if (promise) { this.setState({ isRecording: true }); const data = await promise; this.setState({ isRecording: false }); console.warn('takeVideo', data); } } catch (e) { console.error(e); } } }; ``` --- ## refreshAuthorizationStatus() Allows to make RNCamera check Permissions again and set status accordingly. Making it possible to refresh status of RNCamera after user initially rejected the permissions. ### Method type ```ts refreshAuthorizationStatus(): Promise; ``` ### Usage example ```js /* -> { } */ ``` --- ## stopRecording() Should be called after recordAsync() to make the promise be fulfilled and get the video uri. ### Method type ```ts stopRecording(): void; ``` ### Usage example ```js stopRecording(): void; /* -> { } */ ``` --- ## pausePreview() Pauses the preview. The preview can be resumed again by using resumePreview(). ### Method type ```ts pausePreview(): void; ``` ### Usage example ```js /* -> { } */ ``` --- ## resumePreview() Resumes the preview after pausePreview() has been called. ### Method type ```ts resumePreview(): void; ``` ### Usage example ```js /* -> { } */ ``` --- ## getAvailablePictureSizes() Returns a promise with getAvailablePictureSizes. ### Method type ```ts getAvailablePictureSizes(): Promise; ``` ### Usage example ```js /* -> { } */ ``` --- ## getSupportedRatiosAsync() - Android only Android only. Returns a promise. The promise will be fulfilled with an object with an array containing strings with all camera aspect ratios supported by the device. ### Method type ```ts getSupportedRatiosAsync(): Promise; ``` ### Usage example ```js /* -> { } */ ``` --- ## isRecording() - iOS only iOS only. Returns a promise. The promise will be fulfilled with a boolean indicating if currently recording is started or stopped. ### Method type ```ts isRecording(): Promise; ``` ### Usage example ```js const isRecording = await isRecording(); /* -> { isRecording = true } */ ``` ---