Smart Scanner is a mobile app extension built on top of the . It enhances traditional QR code scanning by supporting multiple versions of QR codes and parsing algorithms that vary across different countries.
Key Features
CSV-Based QR Code Versioning: The app can use a CSV input file to define the different versions of QR codes used in a country.
Direct Value Assignment: QR code type information and configurations can be directly assigned in the ODK formβs data section.
Dynamic Parsing: Smart Scanner identifies the type of QR code from the CSV or data input and applies the appropriate parsing logic.
Form Integration: The scanning results are returned via an intent, providing all the data necessary to fill out a form.
Supported QR Code Types
Smart Scanner currently supports three QR code types:
CWT (CBOR Web Token):
The QR code data is encrypted, and the JSON payload is only accessible after verifying the digital signature using a public key.
Plain JSON:
The QR code contains a JSON payload, which is subject to signature verification after scanning. The verification ensures the dataβs integrity by using specific fields from the QR code.
Plain Text:
The QR code directly contains a plain text string, which can be used without additional parsing or verification.
Public Key Verification
CWT: The verification process must succeed before receiving the JSON payload.
Plain JSON: Verification is done after receiving the payload, ensuring the data hasn't been tampered with.
Input Requirements
To use Smart Scanner, you need to pass an intent with a JSON array containing the following inputs:
qr_code_type:
Metadata defining the different QR code types and their versions.
The ODK form should have variable names consistent with the field mapper in the CSV or data input. The form should include variables for the scanning status and the error codes.