Skip to main content

QR/Barcode Scanning

What is a Code Scanner?

A Code Scanner is a separate Camera output (just like photo or video) that can detect a variety of machine-readable codes, such as:

  • QR: Square QR codes
  • Aztec: Square Aztec codes
  • Data Matrix: Square Data Matrix codes
  • Barcode (EAN): EAN-13 or EAN-8 Barcodes
  • Barcode (Code): Code-128, Code-39 or Code-93 Barcodes
  • Barcode (other): Codabar, ITF-14, UPC-E or PDF-417 Barcodes

Setup

On iOS, the Code Scanner uses the platform-native APIs and can be used out of the box.

On Android, the MLKit Vision Barcode Scanning API will be used, and the model (2.2MB) needs to be included into your app first.

Inside your gradle.properties file, add the enableCodeScanner flag:

VisionCamera_enableCodeScanner=true

Usage

To scan codes, simply create a CodeScanner instance and pass it to the <Camera>:

const codeScanner = useCodeScanner({
codeTypes: ['qr', 'ean-13'],
onCodeScanned: (codes) => {
console.log(`Scanned ${codes.length} codes!`)
}
})

return <Camera {...props} codeScanner={codeScanner} />

The result of this will automatically be memoized.

Separate Output

Since the Code Scanner is a separate camera output (just like photo or video), it cannot be attached simultaneously with photo and video enabled. You need to disable either photo, video, or the codeScanner.

Code result

The Code Scanner will call your onCodeScanned callback with all detected codes (Code), including their decoded string value, and their coordinates on the screen relative to the Preview.


🚀 Next section: Frame Processors