UNPKG

expo-camera

Version:

A React component that renders a preview for the device's either front or back camera. Camera's parameters like zoom, auto focus, white balance and flash mode are adjustable. With expo-camera, one can also take photos and record videos that are saved to t

106 lines (94 loc) 3.65 kB
import { createPermissionHook, PermissionResponse } from 'expo-modules-core'; import { BarcodeScanningResult, BarcodeType } from './Camera.types'; import CameraManager from './ExpoCameraManager'; export { default as CameraView } from './CameraView'; // @needsAudit /** * Checks user's permissions for accessing camera. * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse). */ async function getCameraPermissionsAsync(): Promise<PermissionResponse> { return CameraManager.getCameraPermissionsAsync(); } // @needsAudit /** * Asks the user to grant permissions for accessing camera. * On iOS this will require apps to specify an `NSCameraUsageDescription` entry in the **Info.plist**. * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse). */ async function requestCameraPermissionsAsync(): Promise<PermissionResponse> { return CameraManager.requestCameraPermissionsAsync(); } // @needsAudit /** * Check or request permissions to access the camera. * This uses both `requestCameraPermissionsAsync` and `getCameraPermissionsAsync` to interact with the permissions. * * @example * ```ts * const [status, requestPermission] = useCameraPermissions(); * ``` */ export const useCameraPermissions = createPermissionHook({ getMethod: getCameraPermissionsAsync, requestMethod: requestCameraPermissionsAsync, }); // @needsAudit /** * Checks user's permissions for accessing microphone. * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse). */ async function getMicrophonePermissionsAsync(): Promise<PermissionResponse> { return CameraManager.getMicrophonePermissionsAsync(); } // @needsAudit /** * Asks the user to grant permissions for accessing the microphone. * On iOS this will require apps to specify an `NSMicrophoneUsageDescription` entry in the **Info.plist**. * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse). */ async function requestMicrophonePermissionsAsync(): Promise<PermissionResponse> { return CameraManager.requestMicrophonePermissionsAsync(); } // @needsAudit /** * Check or request permissions to access the microphone. * This uses both `requestMicrophonePermissionsAsync` and `getMicrophonePermissionsAsync` to interact with the permissions. * * @example * ```ts * const [status, requestPermission] = Camera.useMicrophonePermissions(); * ``` */ export const useMicrophonePermissions = createPermissionHook({ getMethod: getMicrophonePermissionsAsync, requestMethod: requestMicrophonePermissionsAsync, }); /** * Scan bar codes from the image at the given URL. * @param url URL to get the image from. * @param barcodeTypes An array of bar code types. Defaults to all supported bar code types on * the platform. * > __Note:__ Only QR codes are supported on iOS. * On android, the barcode should take up the majority of the image for best results. * @return A possibly empty array of objects of the `BarcodeScanningResult` shape, where the type * refers to the barcode type that was scanned and the data is the information encoded in the barcode. */ export async function scanFromURLAsync( url: string, barcodeTypes: BarcodeType[] = ['qr'] ): Promise<BarcodeScanningResult[]> { return CameraManager.scanFromURLAsync(url, barcodeTypes); } export * from './Camera.types'; export * from './PictureRef'; /** * @hidden */ export const Camera = { getCameraPermissionsAsync, requestCameraPermissionsAsync, getMicrophonePermissionsAsync, requestMicrophonePermissionsAsync, scanFromURLAsync, };