@nativescript/mlkit-barcode-scanning
Version:
NativeScript MLKit Barcode Scanner module
265 lines (210 loc) • 6.36 kB
Markdown
# @nativescript/mlkit-barcode-scanning
This plugin is used with [@nativescript/mlkit-core](../plugins/mlkit-core/). It enables barcode scanning and provides the [BarcodeResult](#barcoderesult) type for the barcode-scanned data.
## Contents
* [Installation](#installation)
* [Use @nativescript/mlkit-barcode-scanning](#use-nativescriptmlkit-barcode-scanning)
* [Demo app](#demo-app)
* [API](#api)
* [BarcodeResult](#barcoderesult)
## Installation
```shell
npm install @nativescript/mlkit-barcode-scanning
```
## Use @nativescript/mlkit-barcode-scanning
Follow these steps to scan a barcode:
1. Add [MLKitView](../mlkit-core/) to your page and set the `detectionType` property to `"barcode"`.
```xml
<StackLayout>
<MLKitView
detectionType="barcode"
detection="{{ onDetection }}"
/>
<Label row="6">
<FormattedString>
<Span text="Barcode: "/>
<Span text="{{ barcode }}" class="text-green-500"/>
</FormattedString>
</Label>
</StackLayout>
```
2. To receive the scanned barcode data, handle the `detection` event and get the data if the event's type is `"barcode"`.
```ts
import { Observable } from "@nativescript/core"
import { DetectionEvent, DetectionType } from "@nativescript/mlkit-core";
import { BarcodeResult } from "@nativescript/mlkit-barcode-scanning";
export class BarcodeScannerViewModel extends Observable {
barcode = ""
...
onDetection(event: DetectionEvent){
if(event.type == DetectionType.Barcode){
const barcodeData: BarcodeResult = event.data[0] as BarcodeResult;
this.set("barcode", barcodeData?.rawValue)
}
}
}
```
#### Demo app
You can try a demo app at [StackBlitz](https://stackblitz.com/edit/nativescript-stackblitz-templates-svbcbz?file=app/main-page.xml) with the [NativeScript Preview app](https://preview.nativescript.org/).
## API
### Interfaces
#### BarcodeResult
The scanned barcode data object has the following properties:
| Property | Type | Optional
|:---------|:-----|:------------------
| `format` | [BarcodeFormats](#barcodeformats) | _No_
| `calendarEvent` | [CalenderEvent](#calenderevent) | _Yes_
| `contactInfo` | [ContactInfo](#contactinfo) | _Yes_
| `bounds` | [Bounds](#bounds) | _Yes_
| `points` | [Point](#point)[] | _Yes_
| `displayValue` | `string` | _Yes_
| `driverLicense`| [DriverLicense](#driverlicense) | _Yes_
| `email` | [Email](#email) | _Yes_
| `geoPoint` | [GeoPoint](#geopoint) | _Yes_
| `phone`| [Phone](#phone) | _Yes_
| `rawBytes`| `any[]` | _Yes_
| `rawValue` | `string` | _Yes_
| `sms`| [Sms](#sms) | _Yes_
| `url`| [UrlBookmark](#urlbookmark) | _Yes_
| `valueType`| [ValueType]() | _Yes_
| `wifi`| [WiFi](#wifi) | _Yes_
#### WiFi
| Property | Type | Optional
|:---------|:-----|:-------
| `encryptionType` | `string` | _No_
| `password`| `string` | _No_
| `ssid`| `string` | _No_
#### UrlBookmark
| Property | Type | Optional
|:---------|:-----|:-------
| `title` | `string` | _Yes_
| `url`| `string` | _Yes_
#### Sms
| Property | Type | Optional
|:---------|:-----|:-------
| `message` | `string` | _No_
| `honeNumber`| `string` | _No_
#### Phone
| Property | Type | Optional
|:---------|:-----|:-------
| `number` | `string` | _No_
| `type`| [PhoneType](#phonetype) | _No_
#### Email
| Property | Type | Optional
|:---------|:-----|:-------
| `address` | `string` | _No_
| `subject` | `string` | _No_
| `body` | `string` | _No_
| `type` | [EmailType](#emailtype)
#### DriverLicense
| Property | Type | Optional
|:---------|:-----|:-------
| `documentType`| `string` | _No_
| `firstName`| `string` | _No_
| `middleName`| `string` | _No_
| `lastName`| `string` | _No_
| `gender`| `string` | _No_
| `addressStreet`| `string` | _No_
| `addressCity`| `string` | _No_
| `addressState`| `string` | _No_
| `addressZip`| `string` | _No_
| `licenseNumber`| `string` | _No_
| `issueDate`| `string` | _No_
| `expiryDate`| `string` | _No_
| `birthDate`| `string` | _No_
| `issuingCountry`| `string` | _No_
#### CalenderEvent
| Property | Type | Optional
|:---------|:-----|:-------
| `description`| `string` | _Yes_
| `location`| `string` | _Yes_
| `organizer`| `string` | _Yes_
| `status`| `string` | _Yes_
| `summary`| `string` | _Yes_
| `start`| `string` | _Yes_
| `end`| `string` | _Yes_
#### Address
| Property | Type | Optional
|:---------|:-----|:-------
| `addressLines`| `string[]`| _No_
| `type` | [AddressType](#addresstype) | _No_
#### ContactInfo
| Property | Type | Optional
|:---------|:-----|:-------
| `addresses`| [Address](#address)[] | _No_
#### Origin
| Property | Type | Optional
|:---------|:-----|:-------
| `x`| `number` | _No_
| `y`| `number` | _No_
#### Size
| Property | Type | Optional
|:---------|:-----|:-------
| `width`| `number` | _No_
| `height`| `number` | _No_
#### Bounds
| Property | Type | Optional
|:---------|:-----|:-------
| `origin` | [Origin](#origin) | _No_
| `size` | [Size](#size) | _No_
#### Point
| Property | Type | Optional
|:---------|:-----|:-------
| `x`| `number` | _No_
| `y`| `number` | _No_
#### GeoPoint
| Property | Type | Optional
|:---------|:-----|:-------
| `lat`| `number` | _No_
| `lng`| `number` | _No_
### Enums
#### EncryptionType
- `Open` = `'open'`
- `WPA` = `'wpa'`
- `WEP` = `'wep'`
- `Unknown` = `'unknown'`
#### PhoneType
- `Unknown` = `"unknown"`
- `Home` = `"home"`
- `Work` = `"work"`
- `Fax` = `"fax"`
- `Mobile` = `"mobile"`
#### EmailType
- `Unknown` = `"unknown"`
- `Home` = `"home"`
- `Work` = `"work"`
#### AddressType
- `Unknown` = `"unknown"`
- `Home` = `"home"`
- `Work` = `"work"`
#### ValueType
- `ContactInfo`= `"contactInfo"`
- `Email`= `"email"`
- `ISBN`= `"isbn"`
- `Phone`= `"phone"`
- `Product`= `"product"`
- `Text`= `"text"`
- `Sms`= `"sms"`
- `URL`= `"url"`
- `WiFi`= `"wifi"`
- `Geo`= `"geo"`
- `CalenderEvent`= `"calender"`
- `DriverLicense`= `"driverLicense"`
- `Unknown`= `"unknown"`
#### BarcodeFormats
- `ALL` = `'all'`
- `CODE_128` = `'code_128'`
- `CODE_39` = `'code_39'`
- `CODE_93` = `'code_93'`
- `CODABAR` = `'codabar'`
- `DATA_MATRIX` = `'data_matrix'`
- `EAN_13` = '`ean_13'`
- `EAN_8` = `'ean_8'`
- `ITF` = `'itf'`
- `QR_CODE` = `'qr_code'`
- `UPC_A` = `'upc_a'`
- `UPC_E` = `'upc_e'`
- `PDF417` = `'pdf417'`
- `AZTEC` = `'aztec'`
- `UNKOWN` = `'unknown'`
## License
Apache License Version 2.0