@jimcase/barcode-scanning
v7.0.0-next.5
Published
Capacitor plugin for ML Kit Barcode Scanning.
Readme
@capacitor-mlkit/barcode-scanning
Temporary package until @capacitor-mlkit/barcode-scanning next release https://github.com/capawesome-team/capacitor-mlkit/pull/226
Unofficial Capacitor plugin for ML Kit Barcode Scanning.[^1][^2]
Features
- 🧩 Optional ready-to-use interface without webview customizations
- 🏎️ Extremely fast
- 📷 Scan multiple barcodes at once
- ⏺️ Define detection area
- 🏞️ Reading barcodes from images
- 🔦 Torch and Autofocus support
- 🔋 Supports Android and iOS
For a complete list of supported barcodes, see BarcodeFormat.
Demo
A working example can be found here: https://github.com/robingenz/capacitor-mlkit-plugin-demo
| Android | | ------------------------------------------------------------------------------------------------------------------------------- | | |
Guides
Installation
npm install @jimcase/barcode-scanning@next
npx cap syncAttention: Please use the next tag to install the latest version of the plugin due to issue #179.
Android
Permissions
This API requires the following permissions be added to your AndroidManifest.xml before the application tag:
<!-- To get access to the camera. -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- To get access to the flashlight. -->
<uses-permission android:name="android.permission.FLASHLIGHT"/>You also need to add the following meta data in the application tag in your AndroidManifest.xml:
<meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/>
<!-- To use multiple models: android:value="face,model2,model3" -->Data Binding
Enable the databinding library by setting the dataBinding and enabled build options to true in your module-level (app-level) Gradle file (usually android/app/build.gradle):
android {
...
+ buildFeatures {
+ dataBinding true
+ }
+ dataBinding {
+ enabled = true
+ }
}iOS
Minimum Deployment Target
Make sure to set the deployment target in your ios/App/Podfile to at least 15.5:
platform :ios, '15.5'Variables
This plugin will use the following project variables (defined in your app’s variables.gradle file):
$androidxCameraCamera2Versionversion ofcom.google.mlkit:barcode-scanning(default:1.1.0)$androidxCameraCoreVersionversion ofcom.google.mlkit:barcode-scanning(default:1.1.0)$androidxCameraLifecycleVersionversion ofcom.google.mlkit:barcode-scanning(default:1.1.0)$androidxCameraViewVersionversion ofcom.google.mlkit:barcode-scanning(default:1.1.0)$mlkitBarcodeScanningVersionversion ofcom.google.mlkit:barcode-scanning(default:17.1.0)$playServicesCodeScannerVersionversion ofcom.google.mlkit:barcode-scanning(default:16.0.0)
iOS
Add the NSCameraUsageDescription key to the ios/App/App/Info.plist file, which tells the user why the app needs to use the camera:
+ <key>NSCameraUsageDescription</key>
+ <string>The app enables the scanning of various barcodes.</string>Configuration
No configuration required for this plugin.
Demo
A working example can be found here: robingenz/capacitor-mlkit-plugin-demo
Usage
import {
BarcodeScanner,
BarcodeFormat,
LensFacing,
} from '@jimcase/barcode-scanning';
const startScan = async () => {
// The camera is visible behind the WebView, so that you can customize the UI in the WebView.
// However, this means that you have to hide all elements that should not be visible.
// You can find an example in our demo repository.
// In this case we set a class `barcode-scanner-active`, which then contains certain CSS rules for our app.
document.querySelector('body')?.classList.add('barcode-scanner-active');
// Add the `barcodeScanned` listener
const listener = await BarcodeScanner.addListener(
'barcodeScanned',
async result => {
console.log(result.barcode);
},
);
// Start the barcode scanner
await BarcodeScanner.startScan();
};
const stopScan = async () => {
// Make all elements in the WebView visible again
document.querySelector('body')?.classList.remove('barcode-scanner-active');
// Remove all listeners
await BarcodeScanner.removeAllListeners();
// Stop the barcode scanner
await BarcodeScanner.stopScan();
};
const scanSingleBarcode = async () => {
return new Promise(async resolve => {
document.querySelector('body')?.classList.add('barcode-scanner-active');
const listener = await BarcodeScanner.addListener(
'barcodeScanned',
async result => {
await listener.remove();
document
.querySelector('body')
?.classList.remove('barcode-scanner-active');
await BarcodeScanner.stopScan();
resolve(result.barcode);
},
);
await BarcodeScanner.startScan();
});
};
const scan = async () => {
const { barcodes } = await BarcodeScanner.scan({
formats: [BarcodeFormat.QrCode],
});
return barcodes;
};
const isSupported = async () => {
const { supported } = await BarcodeScanner.isSupported();
return supported;
};
const enableTorch = async () => {
await BarcodeScanner.enableTorch();
};
const disableTorch = async () => {
await BarcodeScanner.disableTorch();
};
const toggleTorch = async () => {
await BarcodeScanner.toggleTorch();
};
const isTorchEnabled = async () => {
const { enabled } = await BarcodeScanner.isTorchEnabled();
return enabled;
};
const isTorchAvailable = async () => {
const { available } = await BarcodeScanner.isTorchAvailable();
return available;
};
const setZoomRatio = async () => {
await BarcodeScanner.setZoomRatio({ zoomRatio: 0.5 });
};
const getZoomRatio = async () => {
const { zoomRatio } = await BarcodeScanner.getZoomRatio();
return zoomRatio;
};
const getMinZoomRatio = async () => {
const { zoomRatio } = await BarcodeScanner.getMinZoomRatio();
return zoomRatio;
};
const getMaxZoomRatio = async () => {
const { zoomRatio } = await BarcodeScanner.getMaxZoomRatio();
return zoomRatio;
};
const openSettings = async () => {
await BarcodeScanner.openSettings();
};
const isGoogleBarcodeScannerModuleAvailable = async () => {
const { available } =
await BarcodeScanner.isGoogleBarcodeScannerModuleAvailable();
return available;
};
const installGoogleBarcodeScannerModule = async () => {
await BarcodeScanner.installGoogleBarcodeScannerModule();
};
const checkPermissions = async () => {
const { camera } = await BarcodeScanner.checkPermissions();
return camera;
};
const requestPermissions = async () => {
const { camera } = await BarcodeScanner.requestPermissions();
return camera;
};An example of the CSS class barcode-scanner-active with Ionic Framework could be:
// Hide all elements
body.barcode-scanner-active {
visibility: hidden;
--background: transparent;
--ion-background-color: transparent;
}
// Show only the barcode scanner modal
.barcode-scanner-modal {
visibility: visible;
}
@media (prefers-color-scheme: dark) {
.barcode-scanner-modal {
--background: transparent;
--ion-background-color: transparent;
}
}An example of the CSS class barcode-scanner-active without Ionic Framework could be:
// Hide all elements
body.barcode-scanner-active {
visibility: hidden;
}
// Show only the barcode scanner modal
.barcode-scanner-modal {
visibility: visible;
}If you can't see the camera view, make sure all elements in the DOM are not visible or have a transparent background to debug the issue.
API
startScan(...)stopScan()readBarcodesFromImage(...)scan(...)isSupported()enableTorch()disableTorch()toggleTorch()isTorchEnabled()isTorchAvailable()setZoomRatio(...)getZoomRatio()getMinZoomRatio()getMaxZoomRatio()openSettings()isGoogleBarcodeScannerModuleAvailable()installGoogleBarcodeScannerModule()checkPermissions()requestPermissions()addListener('barcodeScanned', ...)addListener('barcodesScanned', ...)addListener('scanError', ...)addListener('googleBarcodeScannerModuleInstallProgress', ...)removeAllListeners()- Interfaces
- Type Aliases
- Enums
startScan(...)
startScan(options?: StartScanOptions | undefined) => Promise<void>Start scanning for barcodes.
Only available on Android and iOS.
| Param | Type |
| ------------- | ------------------------------------------------------------- |
| options | StartScanOptions |
Since: 0.0.1
stopScan()
stopScan() => Promise<void>Stop scanning for barcodes.
Only available on Android and iOS.
Since: 0.0.1
readBarcodesFromImage(...)
readBarcodesFromImage(options: ReadBarcodesFromImageOptions) => Promise<ReadBarcodesFromImageResult>Read barcodes from an image.
Only available on Android and iOS.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------------- |
| options | ReadBarcodesFromImageOptions |
Returns: Promise<ReadBarcodesFromImageResult>
Since: 0.0.1
scan(...)
scan(options?: ScanOptions | undefined) => Promise<ScanResult>Scan a barcode with a ready-to-use interface without WebView customization.
On Android, this method is only available on devices with Google Play Services installed. Therefore, no camera permission is required.
Attention: Before using this method on Android, first check if the Google Barcode Scanner module is available
by using isGoogleBarcodeScannerModuleAvailable().
Only available on Android and iOS.
| Param | Type |
| ------------- | --------------------------------------------------- |
| options | ScanOptions |
Returns: Promise<ScanResult>
Since: 0.0.1
isSupported()
isSupported() => Promise<IsSupportedResult>Returns whether or not the barcode scanner is supported.
Available on Android and iOS.
Returns: Promise<IsSupportedResult>
Since: 0.0.1
enableTorch()
enableTorch() => Promise<void>Enable camera's torch (flash) during a scan session.
Only available on Android and iOS.
Since: 0.0.1
disableTorch()
disableTorch() => Promise<void>Disable camera's torch (flash) during a scan session.
Only available on Android and iOS.
Since: 0.0.1
toggleTorch()
toggleTorch() => Promise<void>Toggle camera's torch (flash) during a scan session.
Only available on Android and iOS.
Since: 0.0.1
isTorchEnabled()
isTorchEnabled() => Promise<IsTorchEnabledResult>Returns whether or not the camera's torch (flash) is enabled.
Only available on Android and iOS.
Returns: Promise<IsTorchEnabledResult>
Since: 0.0.1
isTorchAvailable()
isTorchAvailable() => Promise<IsTorchAvailableResult>Returns whether or not the camera's torch (flash) is available.
Only available on Android and iOS.
Returns: Promise<IsTorchAvailableResult>
Since: 0.0.1
setZoomRatio(...)
setZoomRatio(options: SetZoomRatioOptions) => Promise<void>Set the zoom ratio of the camera.
Only available on Android and iOS.
| Param | Type |
| ------------- | ------------------------------------------------------------------- |
| options | SetZoomRatioOptions |
Since: 5.4.0
getZoomRatio()
getZoomRatio() => Promise<GetZoomRatioResult>Get the zoom ratio of the camera.
Only available on Android and iOS.
Returns: Promise<GetZoomRatioResult>
Since: 5.4.0
getMinZoomRatio()
getMinZoomRatio() => Promise<GetMinZoomRatioResult>Get the minimum zoom ratio of the camera.
Only available on Android and iOS.
Returns: Promise<GetMinZoomRatioResult>
Since: 5.4.0
getMaxZoomRatio()
getMaxZoomRatio() => Promise<GetMaxZoomRatioResult>Get the maximum zoom ratio of the camera.
Only available on Android and iOS.
Returns: Promise<GetMaxZoomRatioResult>
Since: 5.4.0
openSettings()
openSettings() => Promise<void>Open the settings of the app so that the user can grant the camera permission.
Only available on Android and iOS.
Since: 0.0.1
isGoogleBarcodeScannerModuleAvailable()
isGoogleBarcodeScannerModuleAvailable() => Promise<IsGoogleBarcodeScannerModuleAvailableResult>Check if the Google Barcode Scanner module is available.
If the Google Barcode Scanner module is not available, you can install it by using installGoogleBarcodeScannerModule().
Only available on Android.
Returns: Promise<IsGoogleBarcodeScannerModuleAvailableResult>
Since: 5.1.0
installGoogleBarcodeScannerModule()
installGoogleBarcodeScannerModule() => Promise<void>Install the Google Barcode Scanner module.
Attention: This only starts the installation.
The googleBarcodeScannerModuleInstallProgress event listener will
notify you when the installation is complete.
Only available on Android.
Since: 5.1.0
checkPermissions()
checkPermissions() => Promise<PermissionStatus>Check camera permission.
Only available on Android and iOS.
Returns: Promise<PermissionStatus>
Since: 0.0.1
requestPermissions()
requestPermissions() => Promise<PermissionStatus>Request camera permission.
Only available on Android and iOS.
Returns: Promise<PermissionStatus>
Since: 0.0.1
addListener('barcodeScanned', ...)
addListener(eventName: 'barcodeScanned', listenerFunc: (event: BarcodeScannedEvent) => void) => Promise<PluginListenerHandle>Called when a barcode is scanned.
Available on Android and iOS.
| Param | Type |
| ------------------ | --------------------------------------------------------------------------------------- |
| eventName | 'barcodeScanned' |
| listenerFunc | (event: BarcodeScannedEvent) => void |
Returns: Promise<PluginListenerHandle>
Since: 0.0.1
addListener('barcodesScanned', ...)
addListener(eventName: 'barcodesScanned', listenerFunc: (event: BarcodesScannedEvent) => void) => Promise<PluginListenerHandle>Called when barcodes are scanned.
Available on Android and iOS.
| Param | Type |
| ------------------ | ----------------------------------------------------------------------------------------- |
| eventName | 'barcodesScanned' |
| listenerFunc | (event: BarcodesScannedEvent) => void |
Returns: Promise<PluginListenerHandle>
Since: 6.2.0
addListener('scanError', ...)
addListener(eventName: 'scanError', listenerFunc: (event: ScanErrorEvent) => void) => Promise<PluginListenerHandle>Called when an error occurs during the scan.
Available on Android and iOS.
| Param | Type |
| ------------------ | ----------------------------------------------------------------------------- |
| eventName | 'scanError' |
| listenerFunc | (event: ScanErrorEvent) => void |
Returns: Promise<PluginListenerHandle>
Since: 0.0.1
addListener('googleBarcodeScannerModuleInstallProgress', ...)
addListener(eventName: 'googleBarcodeScannerModuleInstallProgress', listenerFunc: (event: GoogleBarcodeScannerModuleInstallProgressEvent) => void) => Promise<PluginListenerHandle>Called when the Google Barcode Scanner module is installed.
Available on Android.
| Param | Type |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| eventName | 'googleBarcodeScannerModuleInstallProgress' |
| listenerFunc | (event: GoogleBarcodeScannerModuleInstallProgressEvent) => void |
Returns: Promise<PluginListenerHandle>
Since: 5.1.0
removeAllListeners()
removeAllListeners() => Promise<void>Remove all listeners for this plugin.
Since: 0.0.1
Interfaces
StartScanOptions
| Prop | Type | Description | Default | Since |
| ---------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------- | ----- |
| formats | BarcodeFormat[] | Improve the speed of the barcode scanner by configuring the barcode formats to scan for. | | 0.0.1 |
| lensFacing | LensFacing | Configure the camera (front or back) to use. | | 0.0.1 |
| resolution | Resolution | Configure the resolution of the captured image that is used for barcode scanning. | Resolution['1280x720'] | 7.0.0 |
ReadBarcodesFromImageResult
| Prop | Type | Description | Since |
| -------------- | ---------------------- | ---------------------- | ----- |
| barcodes | Barcode[] | The detected barcodes. | 0.0.1 |
Barcode
| Prop | Type | Description | Since |
| ------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| bytes | number[] | Raw bytes as it was encoded in the barcode. | 0.0.1 |
| calendarEvent | BarcodeCalendarEvent | Calendar event info. | 7.0.0 |
| contactInfo | BarcodeContactInfo | Person's or organization's business card. | 7.0.0 |
| cornerPoints | [[number, number], [number, number], [number, number], [number, number]] | The four corner points of the barcode in clockwise order starting with top-left. This property is currently only supported by the startScan(...) method. | 0.0.1 |
| displayValue | string | The barcode value in a human readable format. | 0.0.1 |
| driverLicense | BarcodeDriverLicense | Driver license or ID card. | 7.0.0 |
| email | BarcodeEmail | An email message from a 'MAILTO:'. | 7.0.0 |
| format | BarcodeFormat | The barcode format. | 0.0.1 |
| geoPoint | BarcodeGeoPoint | GPS coordinates from a 'GEO:'. | 7.0.0 |
| phone | BarcodePhone | Phone number info. | 7.0.0 |
| rawValue | string | The barcode value in a machine readable format. | 0.0.1 |
| sms | BarcodeSms | A sms message from a 'SMS:'. | 7.0.0 |
| urlBookmark | BarcodeUrlBookmark | A URL and title from a 'MEBKM:'. | 7.0.0 |
| valueType | BarcodeValueType | The barcode value type. | 0.0.1 |
| wifi | BarcodeWifi | A wifi network parameters from a 'WIFI:'. | 7.0.0 |
BarcodeCalendarEvent
| Prop | Type | Description | Since |
| ----------------- | ------------------- | ---------------------------------------- | ----- |
| description | string | The event description. | 7.0.0 |
| end | string | The event end date as ISO 8601 string. | 7.0.0 |
| location | string | The event location. | 7.0.0 |
| organizer | string | The event organizer. | 7.0.0 |
| start | string | The event start date as ISO 8601 string. | 7.0.0 |
| status | string | The event status. | 7.0.0 |
| summary | string | The event summary. | 7.0.0 |
BarcodeContactInfo
| Prop | Type | Description | Since |
| ------------------ | ------------------------------------------------- | --------------------------- | ----- |
| addresses | Address[] | The contact's addresses. | 7.0.0 |
| emails | BarcodeEmail[] | The contact's emails. | 7.0.0 |
| personName | PersonName | The contact's name. | 7.0.0 |
| organization | string | The contact's organization. | 7.0.0 |
| phones | BarcodePhone[] | The contact's phones. | 7.0.0 |
| title | string | The contact's title. | 7.0.0 |
| urls | string[] | The contact's urls. | 7.0.0 |
Address
| Prop | Type | Description | Since |
| ------------------ | --------------------------------------------------- | --------------------------------------------------- | ----- |
| addressLines | string[] | Formatted address, multiple lines when appropriate. | 7.0.0 |
| type | AddressType | Address type. | 7.0.0 |
BarcodeEmail
| Prop | Type | Description | Since |
| ------------- | ----------------------------------------------------------- | ----------------------- | ----- |
| address | string | The email address. | 7.0.0 |
| body | string | The email body. | 7.0.0 |
| subject | string | The email subject. | 7.0.0 |
| type | EmailFormatType | The email address type. | 7.0.0 |
PersonName
| Prop | Type | Description | Since |
| ------------------- | ------------------- | ------------------------------------------------------------------------------------ | ----- |
| first | string | First name. | 7.0.0 |
| formattedName | string | The formatted name. | 7.0.0 |
| last | string | Last name. | 7.0.0 |
| middle | string | Middle name. | 7.0.0 |
| prefix | string | Name prefix. | 7.0.0 |
| pronunciation | string | Text string to be set as the kana name in the phonebook. Used for Japanese contacts. | 7.0.0 |
| suffix | string | Name suffix. | 7.0.0 |
BarcodePhone
| Prop | Type | Description | Since |
| ------------ | ----------------------------------------------------------- | ---------------------- | ----- |
| number | string | The phone number. | 7.0.0 |
| type | PhoneFormatType | The phone number type. | 7.0.0 |
BarcodeDriverLicense
| Prop | Type | Description | Since |
| -------------------- | ------------------- | -------------------------------------------------- | ----- |
| addressCity | string | City of holder's address. | 7.0.0 |
| addressState | string | State of holder's address. | 7.0.0 |
| addressStreet | string | Street of holder's address. | 7.0.0 |
| addressZip | string | Postal code of holder's address. | 7.0.0 |
| birthDate | string | Birthdate of the holder. | 7.0.0 |
| documentType | string | "DL" for driver's licenses, "ID" for ID cards. | 7.0.0 |
| expiryDate | string | Expiration date of the license. | 7.0.0 |
| firstName | string | Holder's first name. | 7.0.0 |
| gender | string | Holder's gender. | 7.0.0 |
| issueDate | string | Issue date of the license. | 7.0.0 |
| issuingCountry | string | ISO 3166-1 alpha-3 code in which DL/ID was issued. | 7.0.0 |
| lastName | string | Holder's last name. | 7.0.0 |
| licenseNumber | string | Driver license ID number. | 7.0.0 |
| middleName | string | Holder's middle name. | 7.0.0 |
BarcodeGeoPoint
| Prop | Type | Description | Since |
| --------------- | ------------------- | ----------- | ----- |
| latitude | number | Latitude. | 7.0.0 |
| longitude | number | Longitude. | 7.0.0 |
BarcodeSms
| Prop | Type | Description | Since |
| ----------------- | ------------------- | ------------------------------- | ----- |
| phoneNumber | string | The phone number of the sms. | 7.0.0 |
| message | string | The message content of the sms. | 7.0.0 |
BarcodeUrlBookmark
| Prop | Type | Description | Since |
| ----------- | ------------------- | -------------------------- | ----- |
| url | string | The URL of the bookmark. | 7.0.0 |
| title | string | The title of the bookmark. | 7.0.0 |
BarcodeWifi
| Prop | Type | Description | Since |
| -------------------- | ----------------------------------------------------------------- | ----------------------------- | ----- |
| encryptionType | WifiEncryptionType | Encryption type of the WI-FI. | 7.0.0 |
| password | string | Password of the WI-FI. | 7.0.0 |
| ssid | string | SSID of the WI-FI. | 7.0.0 |
ReadBarcodesFromImageOptions
| Prop | Type | Description | Since |
| ------------- | ---------------------------- | ---------------------------------------------------------------------------------------- | ----- |
| formats | BarcodeFormat[] | Improve the speed of the barcode scanner by configuring the barcode formats to scan for. | 0.0.1 |
| path | string | The local path to the image file. | 0.0.1 |
ScanResult
| Prop | Type | Description | Since |
| -------------- | ---------------------- | ---------------------- | ----- |
| barcodes | Barcode[] | The detected barcodes. | 0.0.1 |
ScanOptions
| Prop | Type | Description | Since |
| ------------- | ---------------------------- | ---------------------------------------------------------------------------------------- | ----- |
| formats | BarcodeFormat[] | Improve the speed of the barcode scanner by configuring the barcode formats to scan for. | 0.0.1 |
IsSupportedResult
| Prop | Type | Description | Since |
| --------------- | -------------------- | --------------------------------------------------------------------------------------- | ----- |
| supported | boolean | Whether or not the barcode scanner is supported by checking if the device has a camera. | 0.0.1 |
IsTorchEnabledResult
| Prop | Type | Description | Since |
| ------------- | -------------------- | ------------------------------------ | ----- |
| enabled | boolean | Whether or not the torch is enabled. | 0.0.1 |
IsTorchAvailableResult
| Prop | Type | Description | Since |
| --------------- | -------------------- | -------------------------------------- | ----- |
| available | boolean | Whether or not the torch is available. | 0.0.1 |
SetZoomRatioOptions
| Prop | Type | Description | Since |
| --------------- | ------------------- | ---------------------- | ----- |
| zoomRatio | number | The zoom ratio to set. | 5.4.0 |
GetZoomRatioResult
| Prop | Type | Description | Since |
| --------------- | ------------------- | --------------- | ----- |
| zoomRatio | number | The zoom ratio. | 5.4.0 |
GetMinZoomRatioResult
| Prop | Type | Description | Since |
| --------------- | ------------------- | ----------------------- | ----- |
| zoomRatio | number | The minimum zoom ratio. | 5.4.0 |
GetMaxZoomRatioResult
| Prop | Type | Description | Since |
| --------------- | ------------------- | ----------------------- | ----- |
| zoomRatio | number | The maximum zoom ratio. | 5.4.0 |
IsGoogleBarcodeScannerModuleAvailableResult
| Prop | Type | Description | Since |
| --------------- | -------------------- | ------------------------------------------------------------------------------------- | ----- |
| available | boolean | Whether or not the Google Barcode Scanner module is available. | 5.1.0 |
PermissionStatus
| Prop | Type | Since |
| ------------ | ----------------------------------------------------------------------- | ----- |
| camera | CameraPermissionState | 0.0.1 |
PluginListenerHandle
| Prop | Type |
| ------------ | ----------------------------------------- |
| remove | () => Promise<void> |
BarcodeScannedEvent
| Prop | Type | Description | Since |
| ------------- | ------------------------------------------- | ------------------- | ----- |
| barcode | Barcode | A detected barcode. | 0.0.1 |
BarcodesScannedEvent
| Prop | Type | Description | Since |
| -------------- | ---------------------- | ---------------------- | ----- |
| barcodes | Barcode[] | The detected barcodes. | 6.2.0 |
ScanErrorEvent
| Prop | Type | Description | Since |
| ------------- | ------------------- | ------------------ | ----- |
| message | string | The error message. | 0.0.1 |
GoogleBarcodeScannerModuleInstallProgressEvent
| Prop | Type | Description | Since |
| -------------- | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ----- |
| state | GoogleBarcodeScannerModuleInstallState | The current state of the installation. | 5.1.0 |
| progress | number | The progress of the installation in percent between 0 and 100. | 5.1.0 |
Type Aliases
CameraPermissionState
PermissionState | 'limited'
PermissionState
'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'
Enums
BarcodeFormat
| Members | Value | Description | Since |
| ---------------- | -------------------------- | ---------------------------------- | ----- |
| Aztec | 'AZTEC' | Only available on Android and iOS. | 0.0.1 |
| Codabar | 'CODABAR' | Only available on Android and iOS. | 0.0.1 |
| Code39 | 'CODE_39' | Only available on Android and iOS. | 0.0.1 |
| Code93 | 'CODE_93' | Only available on Android and iOS. | 0.0.1 |
| Code128 | 'CODE_128' | Only available on Android and iOS. | 0.0.1 |
| DataMatrix | 'DATA_MATRIX' | Only available on Android and iOS. | 0.0.1 |
| Ean8 | 'EAN_8' | Only available on Android and iOS. | 0.0.1 |
| Ean13 | 'EAN_13' | Only available on Android and iOS. | 0.0.1 |
| Itf | 'ITF' | Only available on Android and iOS. | 0.0.1 |
| Pdf417 | 'PDF_417' | Only available on Android and iOS. | 0.0.1 |
| QrCode | 'QR_CODE' | Only available on Android and iOS. | 0.0.1 |
| UpcA | 'UPC_A' | Only available on Android and iOS. | 0.0.1 |
| UpcE | 'UPC_E' | Only available on Android and iOS. | 0.0.1 |
LensFacing
| Members | Value | Since |
| ----------- | -------------------- | ----- |
| Front | 'FRONT' | 0.0.1 |
| Back | 'BACK' | 0.0.1 |
Resolution
| Members | Value | Since |
| ----------------- | -------------- | ----- |
| '640x480' | 0 | 7.0.0 |
| '1280x720' | 1 | 7.0.0 |
| '1920x1080' | 2 | 7.0.0 |
AddressType
| Members | Value | Since |
| ------------- | -------------- | ----- |
| HOME | 0 | 7.0.0 |
| UNKNOWN | 1 | 7.0.0 |
| WORK | 2 | 7.0.0 |
EmailFormatType
| Members | Value | Since |
| ------------- | -------------- | ----- |
| HOME | 0 | 7.0.0 |
| UNKNOWN | 1 | 7.0.0 |
| WORK | 2 | 7.0.0 |
PhoneFormatType
| Members | Value | Since |
| ------------- | -------------- | ----- |
| FAX | 0 | 7.0.0 |
| HOME | 1 | 7.0.0 |
| MOBILE | 2 | 7.0.0 |
| UNKNOWN | 3 | 7.0.0 |
| WORK | 4 | 7.0.0 |
BarcodeValueType
| Members | Value | Since |
| -------------------- | ------------------------------ | ----- |
| CalendarEvent | 'CALENDAR_EVENT' | 0.0.1 |
| ContactInfo | 'CONTACT_INFO' | 0.0.1 |
| DriversLicense | 'DRIVERS_LICENSE' | 0.0.1 |
| Email | 'EMAIL' | 0.0.1 |
| Geo | 'GEO' | 0.0.1 |
| Isbn | 'ISBN' | 0.0.1 |
| Phone | 'PHONE' | 0.0.1 |
| Product | 'PRODUCT' | 0.0.1 |
| Sms | 'SMS' | 0.0.1 |
| Text | 'TEXT' | 0.0.1 |
| Url | 'URL' | 0.0.1 |
| Wifi | 'WIFI' | 0.0.1 |
| Unknown | 'UNKNOWN' | 0.0.1 |
WifiEncryptionType
| Members | Value | Since |
| ---------- | -------------- | ----- |
| OPEN | 1 | 7.0.0 |
| WEP | 2 | 7.0.0 |
| WPA | 3 | 7.0.0 |
GoogleBarcodeScannerModuleInstallState
| Members | Value | Since |
| --------------------- | -------------- | ----- |
| UNKNOWN | 0 | 5.1.0 |
| PENDING | 1 | 5.1.0 |
| DOWNLOADING | 2 | 5.1.0 |
| CANCELED | 3 | 5.1.0 |
| COMPLETED | 4 | 5.1.0 |
| FAILED | 5 | 5.1.0 |
| INSTALLING | 6 | 5.1.0 |
| DOWNLOAD_PAUSED | 7 | 5.1.0 |
Common Issues
NullPointerException during startScan(...)
The following error may occur when calling the startScan(...) method: Attempt to invoke virtual method 'void androidx.camera.view.PreviewView.setScaleType(androidx.camera.view.PreviewView$ScaleType)' on a null object reference.
In this case, make sure that the databinding library is enabled (see Data Binding).
Terms & Privacy
This plugin uses the Google ML Kit:
Changelog
See CHANGELOG.md.
License
See LICENSE.
[^1]: This project is not affiliated with, endorsed by, sponsored by, or approved by Google LLC or any of their affiliates or subsidiaries.
[^2]: QR Code is a registered trademark of DENSO WAVE INCORPORATED.
