The Object Output
Scanning Objects using the Object Output
The CameraObjectOutput allows scanning objects (as ScannedObjects) using the platform-native object outputs. This is more efficient than the Barcode Scanner (see "The Barcode Scanner"), but offers less flexibility.
Creating an Object Output
function App() {
const device = useCameraDevice('back')
const objectOutput = useObjectOutput({
types: ['qr'],
onObjectsScanned(objects) {
console.log(`Scanned ${objects.length} objects!`)
}
})
return (
<Camera
style={StyleSheet.absoluteFill}
isActive={true}
device={device}
outputs={[objectOutput]}
/>
)
}function App() {
const device = useCameraDevice('back')
const objectOutput = useObjectOutput({
types: ['qr'],
onObjectsScanned(objects) {
console.log(`Scanned ${objects.length} objects!`)
}
})
const camera = useCamera({
isActive: true,
device: device,
outputs: [objectOutput],
})
}const session = await HybridCameraFactory.createCameraSession(false)
const device = await getDefaultCameraDevice('back')
const objectOutput = HybridCameraFactory.createObjectOutput({
enabledObjectTypes: ['qr']
})
objectOutput.setOnObjectsScannedCallback((objects) => {
console.log(`Scanned ${objects.length} objects!`)
})
await session.configure([
{
input: device,
outputs: [
{ output: objectOutput, mirrorMode: 'auto' }
],
config: {}
}
], {})
await session.start()See ObjectOutputOptions for a full list of configuration options for the Object Output.
Warning
The CameraObjectOutput is iOS only, since Android does not have a native object output.
Use "The Barcode Scanner" (which uses MLKit) on Android instead.
ScannedObject subclasses
ScannedObject is the base-class of all objects scanned by the CameraObjectOutput.
There are multiple subclasses of ScannedObject, such as ScannedCode (e.g. for QR codes or barcodes) or ScannedFace:
const objectOutput = useObjectOutput({
types: ['qr'],
onObjectsScanned(objects) {
for (const object of objects) {
if (isScannedCode(object)) {
console.log(`Code: ${object.value}`)
} else if (isScannedFace(object)) {
console.log(`Face: ${object.faceID}`)
} else {
console.log(`Unknown Object: ${object.type}`)
}
}
}
})Tip
See "A ScannedObject" for more information about Scanned Objects.