Camera Controls
You can use HMSCameraControls
class to access the camera controls APIs.
Minimum Requirements
- SDK version 1.5.0 or higher
Capture at the highest resolution offered by the camera
By using static captureImageAtMaxSupportedResolution
method on HMSCameraControls
class
allows you to take the highest quality picture from the local video stream irrespective of
network quality and video quality set in HMSRole
of local peer.
captureImageAtMaxSupportedResolution
accepts an optional parameter named flash
, It's
default value is false
, if true
is passed then device flashlight will be used while
capturing the picture.
It returns a Promise
which is resolved with the "path" of the captured picture saved on
your device.
🔑 Note: captureImageAtMaxSupportedResolution
method only works if camera is turned ON
🔑 Note: The captured picture is in jpg
format on Android and in png
format on iOS
import { PermissionsAndroid, Platform } from 'react-native'; import { HMSCameraControl } from '@100mslive/react-native-hms'; ... // state to save captured image file path on device const [capturedImageFilePath, setCapturedImageFilePath] = React.useState(''); ... try { // Step 1: Request External Storage Permission (WRITE_EXTERNAL_STORAGE) // Note: You can also use (react-native-permissions)[https://www.npmjs.com/package/react-native-permissions] lib to handle permissions const granted = Platform.OS === 'ios' ? true : await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE, { title: 'Storage Permission Required', message: 'Application needs access to your storage to save image file', buttonPositive: 'true', }, ); // Step 2: Capture Image const withFlash = true; // Use flashlight on device while capturing image // After the external storage permission has been granted, You can call method to capture image const imagePath: string = await HMSCameraControl.captureImageAtMaxSupportedResolution(withFlash); // Now you can use the image path to show the image, present a sharesheet or any other usecase // You may need to prefix `file://` on this path to show captured image in Image component provided by react native setCapturedImageFilePath(`file://${imagePath}`); } catch (error) { // Handle the Error occured while trying to capture image accordingly } ... // Showing captured image to app users <Image source={{ uri: capturedImageFilePath }} // `capturedImageFilePath` has "file://" prefixed style={{ width: '80%', height: '80%' }} resizeMode="contain" />
🔑 Note: You have to request the storage permission before calling this method because it will save the image on the device
🔑 Note: If flashlight is not supported on the device and true
value is passed to the
captureImageAtMaxSupportedResolution
method for flash
parameter, then this method will
throw and error