UNPKG

@datalogic/cordova-plugin-datalogic

Version:
514 lines (373 loc) 13.5 kB
# Datalogic Cordova Plugin Library that exposes the [Datalogic Android (Java) SDK](https://github.com/datalogic/datalogic-android-sdk) as a [Cordova plugin](https://cordova.apache.org/plugins/?q=cordova-plugin-datalogic). It lets you receive barcode data from the scanner, as well as configure various scanner and device settings. It is available as a npm package for easy consumption here: [@datalogic/cordova-plugin-datalogic](https://www.npmjs.com/package/@datalogic/cordova-plugin-datalogic). ## Installation You can install the plugin from the `npm` registry as follows: ```bash npm i @datalogic/cordova-plugin-datalogic ``` ***...or*** use the following Cordova CLI command: ```bash cordova plugin add @datalogic/cordova-plugin-datalogic ``` ***or,*** if you are using ionic, this ionic command: ```bash ionic cordova plugin add @datalogic/cordova-plugin-datalogic ``` ***or,*** if you are using PhoneGap CLI, this phonegap command: ```bash phonegap plugin add @datalogic/cordova-plugin-datalogic ## Publish new version Install and use the [np tool](https://github.com/sindresorhus/np): ``` bash npm install --global np np ``` ## Sample apps Several Ionic sample applications are provided to demonstrate using the plugin. You can [find them here](https://github.com/datalogic/ionic-samples). ## API Reference All functions are asynchronous. All functions will, at a minimum, include `successCallback` and `errorCallback` parameters, both of which are callback functions. * `successCallback` will be called in normal cases, and will return an appropriate JSON `object`. * `errorCallback` will be called when there was an error, and will return a single error `string`. ### Namespaces | Namespace | Description |-----------|------------ | [barcodeManager](#barcodeManager) | receive barcode data | [autoScanTrigger](#autoScanTrigger) | work the the autoscan features | [keyboardManager](#keyboardManager) | set usable device triggers | [ledManager](#ledManager) | control device LEDs | [scannerProperties](#scannerProperties) | define availabled symbologies ### barcodeManager --- | Function | Description |----------|------------ | [addReadListener](#addreadlistenersuccesscallback-errorcallback-object) | Register to recieve barcode data on each scan. | [pressTrigger](#presstriggersuccesscallback-errorcallback-object) | Simulate a trigger button press. | [releaseTrigger](#releasetriggersuccesscallback-errorcallback-object) | Simulate a trigger button release. #### .addReadListener(`successCallback`, `errorCallback`): Object Register to recieve barcode data on each scan. `successCallback` will be called ***every time*** a barcode is successfully scanned. Therefore, you will typically only need to call `barcodeManager.addReadListener()` *once* in your application. ##### Response * `barcodeData` : `string` - the barcode data scanned. * `barcodeType` : `string` - will be one of the `BarcodeID` values defined in the [BarcodeID class](https://github.com/datalogic/datalogic-android-sdk/blob/master/sdk/src/main/java/com/datalogic/decode/BarcodeID.java) in the [Datalogic Android SDK](https://github.com/datalogic/datalogic-android-sdk). ```json { "barcodeData": "EUG2997", "barcodeType": "CODE128" } ``` ##### Example ```js declare let barcodeManager : any; ... barcodeManager.addReadListner( (data) => { parsedData = JSON.parse(data); alert(parsedData.barcodeData + ", " + parsedData.barcodeType); }, (err)=>{ alert(err); } ); ``` #### .pressTrigger(`successCallback`, `errorCallback`): Object Call this method to simulate a trigger button press. The method does not always immediately start a capture; instead it behaves like pressing a physical scan button. ##### Response `string` with success message ##### Example ```js barcodeManager.pressTrigger( (data) => { alert(data); }, (err) => { alert(err);} ); ``` #### .releaseTrigger(`successCallback`, `errorCallback`): Object Call this method to simulate a release of a trigger button. The method does not always immediately stop a capture; instead it behaves like releasing a physical scan button. ##### Response `string` with success message ##### Example ```js barcodeManager.releaseTrigger( (data) => { alert(data); }, (err) => { alert(err);} ); ``` ### autoScanTrigger --- | Function | Description |----------|------------ | [isAvailable](#isavailablesuccesscallback-errorcallback-object) | Determine if the auto scan feature is available on this device. | [getSupportedRanges](#getsupportedrangessuccesscallback-errorcallback-object) | Get the supported ranges of the autoscan feature. | [getCurrentRange](#getcurrentrangesuccesscallback-errorcallback-object) | Get the current range of the autoscan feature. | [setCurrentRange](#setcurrentrangeid-successcallback-errorcallback-object) | Set the current range of the autoscan feature. #### .isAvailable(`successCallback`, `errorCallback`): Object Determine if the auto scan feature is available on this device. ##### Response * `available` : `boolean` - indicates if autoscan is supported or not on this device. ```json { "available": true } ``` ##### Example ```js declare let autoScanTrigger : any; isAvailable : boolean = false; ... autoScanTrigger.isAvailable( (data) => { this.isAvailable = JSON.parse(data).available; alert(this.isAvailable); }, (err) => { alert(err); } ); ``` #### .getSupportedRanges(`successCallback`, `errorCallback`): Object Get the supported ranges of the autoscan feature. ##### Response `supportedRanges` : `array` - provides array of ranges device supports. The array will be empty if device deos not support autoscan. Each object in the array contains: * `id` : `integer` - unique value for a step in the supported ranges * `name` : `string` - descriptive text related to the `id` If AutoScan is not supported by device: ```json { "supportedRanges":[] } ``` If AutoScan is supported: ```json { "supportedRanges":[ { "id":0, "name":"Near" }, { "id":1, "name":"Intermediate" }, { "id":2, "name":"Far" } ] } ``` ##### Example ```js declare let autoScanTrigger : any; autoScanTrigger.getSupportedRanges( (data) => { alert(JSON.parse(data).supportedRanges); if(this.supportedRanges.length == 0) alert("Device does not support Auto Scan"); }, (err) => { alert(err); } ); ``` #### .getCurrentRange(`successCallback`, `errorCallback`): Object Get the current range of the autoscan feature. ##### Response `currentRange` : `object` - contains 2 fields: * `id` : `integer` * `name` : `string` If AutoScan is not supported by device: ```json { "currentRange":null } ``` If AutoScan is supported: ```json { "currentRange": { "id":1, "name":"Intermediate" } } ``` ##### Example ```js declare let autoScanTrigger : any; autoScanTrigger.getCurrentRange( (data) => { alert(JSON.parse(data).currentRange); }, (err) => { alert(err); } ); ``` #### .setCurrentRange(`id`, `successCallback`, `errorCallback`): Object Set the current range of the autoscan feature. `id` : `integer` - should match one of the `id` values retrevied by the getSupportedRanges function. ##### Response `string` with success message ##### Example Set current range to "Intermediate" ```js autoScanTrigger.setCurrentRange( 0, (data) => { alert(data); }, (err) => { alert(err); } ); ``` ### keyboardManager --- | Function | Description |----------|------------ | [getAllAvailableTriggers](#getallavailabletriggers-successcallback-errorcallback-object) | Get all the available triggers of the device. | [setAllAvailableTriggers](#setallavailabletriggersenable-successcallback-errorcallback-object) | Set all the devices triggers on or off. | [setTriggers](#settriggersconfig-successcallback-errorcallback-object) | Set one or more triggers on or off. #### .getAllAvailableTriggers (`successCallback`, `errorCallback`): Object Get all the available triggers of the device. ##### Response `triggers` : `array` - each object in the array contains: * `enabled` : `boolean` * `id` : `integer` * `name` : `string` Typical resopsnse: ```json { "triggers":[ { "enabled":true, "id":3, "name":"Front Trigger" }, { "enabled":false, "id":4, "name":"Auto Scan Trigger" }, { "enabled":false, "id":5, "name":"Motion Trigger" } ] } ``` ##### Example ```js keyboardManager.getAllAvailableTriggers( (data) => { alert(JSON.parse(data).triggers); }, (err) => { alert(err); } ); ``` #### .setAllAvailableTriggers(`enable`, `successCallback`, `errorCallback`): Object Set all the devices triggers on or off. ##### Response `string` with success message ##### Example Turn all triggers on. ```js keyboardManager.setAllAvailableTriggers( true, (data) => { alert(data); }, (err) => { alert(err); } ); ``` #### .setTriggers(`config`, `successCallback`, `errorCallback`): Object Set one or more triggers on or off. You will likely call `getAllAvailableTriggers`, edit the `enabled` flags of each returned object as desired, and then resubmit by calling `setTriggers`. `config` : `array` - each ojbect in the array represents an individual trigger. Each object in the array contains: * `id` : `integer` * `enabled` : `boolean` ##### Response `string` with success message ##### Example ```js //an array os supported triggers triggers:{id: number, name: string, enabled: boolean}[] = []; ... keyboardManager.getAllAvailableTriggers( (data) => { this.triggers = JSON.parse(data).triggers; this.triggers[0].enabled = false; keyboardManager.setTriggers( this.triggers, (data) => { alert(data); }, (err) => { alert(err);} ); }, (err) => { alert(err); } ); ``` ### ledManager --- | Function | Description |----------|------------ | [setLed](#setledledconfig-successcallback-errorcallback-object) | Set various device LEDs. #### .setLed(`ledConfig`, `successCallback`, `errorCallback`): Object Set the various device LEDs. A list of enum values for LEDs can be found [here]( https://datalogic.github.io/android-sdk-docs/reference/com/datalogic/device/notification/Led.html). ##### Response `string` with success message ##### Example ```js ledManager.setLed({"led": "LED_GOOD_READ", "enable": false}, null, null); ``` ### scannerProperties --- | Function | Description |----------|------------ | [edit](#editsuccesscallback-errorcallback-object) | Get a list of supported properties along with the state of each (enabled or disabled). | [store](#storeproperties-successcallback-errorcallback-object) | Apply changes to one or more properties with the values supplied. #### .edit(`successCallback`, `errorCallback`): Object Get a list of supported scanner properties along with the state of each (enabled or disabled). ##### Response A single JSON object containing an object for each of the available symbologies. Each symbology contains, at a minimum, these fields: * `enable` : `boolean` - if scannner is set to detect this barcode type or not * `supported` : `boolean` - if the scanner supports the given barcode type or not ```json { "keyboardWedge":{"enable":true,"supported":true}, "aztec":{"enable":true,"supported":true}, "codabar":{"enable":true,"supported":true}, "code128":{"enable":true,"supported":true}, "code39":{"enable":true,"supported":true}, "code93":{"enable":false,"supported":true}, "composite":{"enable":false,"supported":true}, "datamatrix":{"enable":true,"supported":true}, "digimarc":{"enable":false,"supported":false}, "discrete25":{"enable":false,"supported":true}, "ean13":{"enable":true,"supported":true}, "ean8":{"enable":true,"supported":true}, "gs1DataBar_14":{"enable":true,"supported":true}, "gs1DataBar_Expanded":{"enable":true,"supported":true}, "gs1DataBar_Limited":{"enable":true,"supported":true}, "interleaved25":{"enable":true,"supported":true}, "matrix25":{"enable":false,"supported":true}, "maxicode":{"enable":false,"supported":true}, "microQr":{"enable":false,"supported":true}, "micropdf417":{"enable":false,"supported":true}, "msi":{"enable":false,"supported":true}, "p4State":{"enable":false,"supported":true}, "pAus":{"enable":false,"supported":true}, "pJap":{"enable":false,"supported":true}, "pKix":{"enable":false,"supported":true}, "pPlanet":{"enable":false,"supported":true}, "pPostnet":{"enable":false,"supported":true}, "pRM":{"enable":false,"supported":true}, "pdf417":{"enable":true,"supported":true}, "qrCode":{"enable":true,"supported":true}, "upcA":{"enable":true,"supported":true}, "upcE":{"enable":true,"supported":true} } ``` ##### Example ```js properties : any = {}; ... scannerProperties.edit( (data) => { this.properties = JSON.parse(data); this.aztec = false; this.codabar = false; this.code128 = true; this.keyboardWedge = false; }, (err) => { alert(err); } ); ``` #### .store(`properties`, `successCallback`, `errorCallback`): Object Apply changes to one or more symbologies with the values supplied in `properties`. ##### Response `string` with success message ##### Examples Enable UPC-E symbology ```js scannerProperties.store({"upcE":{"enable":true,"supported":true}}, null, null); ``` Disable keyboard wedge feature ```js scannerProperties.store({"keyboardWedge":{"enable":false}}, null, null); ```