Camera Controller
Creating a Camera Controller and using it to adjust the Camera
A CameraController controls an active CameraSession's properties, like zoom, exposure or focus.
Get a CameraController
The CameraSession's configure(...) method returns one CameraController per configured CameraSessionConnection - which, in single-camera Sessions is always one or zero.
The <Camera /> view exposes its CameraController under its CameraRef:
function App() {
const camera = useRef<CameraRef>(null)
return (
<Camera
style={StyleSheet.absoluteFill}
isActive={true}
device="back"
ref={camera}
onConfigured={() => {
const controller = camera.current.controller
}}
/>
)
}The useCamera(...) hook returns a CameraController:
function App() {
const camera = useCamera({
isActive: true,
device: 'back',
})
}The CameraSession returns all CameraControllers in configure(...):
const device = ...
const session = ...
const controllers = await session.configure([
{
input: device,
outputs: [],
config: {}
}
], {})Probe for feature availability
Since Camera hardware varies between vendors, always make sure to probe for available features - for example, to use exposure bias (see "Exposure Bias") make sure the CameraDevice supports it:
const controller = ...
if (controller.device.supportsExposureBias) {
const targetExposure = 5
const clampedExposure = Math.min(targetExposure, controller.device.maxExposureBias)
await controller.setExposureBias(clampedExposure)
}Note
See CameraController for a full list of available features.