import { Injectable } from '@angular/core'; import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, AwesomeCordovaNativePlugin, } from '@awesome-cordova-plugins/core'; import { Observable } from 'rxjs'; /** * dceLicense: License of Dynamsoft Camera Enhancer * resolution: use EnumResolution */ export interface ScanOptions { dceLicense?: string; resolution?: number; } export interface FrameResult { frameWidth: number; frameHeight: number; results: BarcodeResult[]; } export interface BarcodeResult { barcodeText: string; barcodeFormat: string; barcodeBytesBase64?: string; x1: number; x2: number; x3: number; x4: number; y1: number; y2: number; y3: number; y4: number; } export enum EnumResolution { RESOLUTION_AUTO = 0, RESOLUTION_480P = 1, RESOLUTION_720P = 2, RESOLUTION_1080P = 3, RESOLUTION_2K = 4, RESOLUTION_4K = 5 } /** * @name dynamsoft-barcode-scanner * @description * This plugin scans barcodes using Dynamsoft Barcode Reader * * @usage * ```typescript * import { dynamsoft-barcode-scanner } from '@awesome-cordova-plugins/dynamsoft-barcode-scanner'; * * * constructor(private dynamsoft-barcode-scanner: dynamsoft-barcode-scanner) { } * * ... * * * await this.dynamsoft-barcode-scanner.init("license"); * this.dynamsoft-barcode-scanner.startScanning("license").subscribe(result => { console.log(result); }); * * ``` */ @Plugin({ pluginName: 'dynamsoft-barcode-scanner', plugin: 'cordova-plugin-dynamsoft-barcode-reader', pluginRef: 'cordova.plugins.DBR', repo: 'https://github.com/xulihang/cordova-plugin-dynamsoft-barcode-reader', install: '', installVariables: [], platforms: ['Android', 'iOS'], }) @Injectable() export class BarcodeScanner extends AwesomeCordovaNativePlugin { /** * Initialize Dynamsoft Barcode Reader * @param license {string} * @return {Promise} Returns a promise that resolves when the initialization is done */ @Cordova({ successIndex: 1, errorIndex: 2, }) init(license: string): Promise { return; } /** * Set up runtime settings * @param settings {string} runtime settings template in JSON * @return {Promise} Returns a promise */ @Cordova({ successIndex: 1, errorIndex: 2, }) initRuntimeSettingsWithString(settings?: string): Promise { return; } /** * Output runtime settings to JSON string * @return {Promise} Returns a promise */ @Cordova({ successIndex: 1, errorIndex: 2 }) outputSettingsToString(): Promise { return; } /** * destroy Dynamsoft Barcode Reader * @return {Promise} Returns a promise */ @Cordova({ successIndex: 1, errorIndex: 2 }) destroy(): Promise { return; } /** * start the camera to scan barcodes * @param options {ScanOptions} * @return {Observable} */ @Cordova({ successIndex: 1, errorIndex: 2, observable: true, }) startScanning(options?: ScanOptions): Observable { return; } /** * stop scanning * @return {Promise} Returns a promise */ @Cordova({ successIndex: 1, errorIndex: 2 }) stopScanning(): Promise { return; } /** * resume scanning * @return {Promise} Returns a promise */ @Cordova({ successIndex: 1, errorIndex: 2 }) resumeScanning(): Promise { return; } /** * pause scanning * @return {Promise} Returns a promise */ @Cordova({ successIndex: 1, errorIndex: 2 }) pauseScanning(): Promise { return; } /** * get resolution like: 1280x720 * @return {Promise} Returns a promise */ @Cordova({ successIndex: 1, errorIndex: 2 }) getResolution(): Promise { return; } /** * switch torch * @param desiredStatus {string} on or off * @return {Promise} Returns a promise */ @Cordova({ successIndex: 1, errorIndex: 2 }) switchTorch(desiredStatus: string): Promise { return; } }