Barcode Extension for Smartface Native Framework
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
sample
README.md
barcode-Android.js
barcode-iOS.js
index.js
package.json

README.md

sf-extension-barcode

Twitter: @Smartface_io License

Installation

Smartface Barcode Extension can be installed via npm easily from our public npm repository. The installation is pretty easy via Smartface Cloud IDE.

  • Run command
(cd ~/workspace/scripts && npm i -S sf-extension-barcode)
  • Finally require the extension as:
const BarcodeScanner = require("sf-extension-barcode").BarcodeScanner;

How to use

  1. Require extension with
const BarcodeScanner = require("sf-extension-barcode").BarcodeScanner;
  1. Create an instance of BarcodeScanner via below example. You have to create barcode scanner object after onShow method. The scanning page is a fullscreen page.
var barcodeScanner = new BarcodeScanner();
  1. You can customize scanning page using barcodeScanner.layout. Look at sample code in sample folder for details.
barcodeScanner.layout.addChild(view);
  1. Set onResult callback to handle the result:
barcodeScanner.onResult = function(e) {
    var barcode = e.barcode;
    var format = e.barcode.format;
    page.lblBarcode.text = barcode.text;
    barcodeScanner.stopCamera();
    barcodeScanner.hide();
}
  1. Finally call show method with required parameters to scan barcode. Don't forget to guarantee camera permission before show method.
barcodeScanner.show({page: pageInstance, tag: "myPageTag"});

Barcode Format Type

Supported Formats:

Barcode.FormatType.AZTEC
Barcode.FormatType.CODABAR
Barcode.FormatType.CODE_39
Barcode.FormatType.CODE_93
Barcode.FormatType.CODE_128
Barcode.FormatType.DATA_MATRIX
Barcode.FormatType.EAN_8
Barcode.FormatType.EAN_13
Barcode.FormatType.ITF
Barcode.FormatType.MAXICODE
Barcode.FormatType.PDF_417
Barcode.FormatType.QR_CODE
Barcode.FormatType.RSS_14
Barcode.FormatType.RSS_EXPANDED
Barcode.FormatType.UPC_A
Barcode.FormatType.UPC_E
Barcode.FormatType.UPC_EAN_EXTENSION

You can get format type via below code.

barcodeScanner.onResult = function(e) {
    var barcode = e.barcode;
    if(barcode.format === Barcode.FormatType.QR_CODE) {
        console.log("This is a qr code");
    }

Notes

  1. Hiding the barcodeScanner causes page.onShow event to be fired.
  2. If there is a need for closing the scanner, it needs to be implemented by the developer. UI close button example is in sample folder. For Android onBackButtonPressed needs to be implemented.
  3. Scanner does not hide automatically when scanned
  4. A scanner instance can be used only for once per image scan. For each scan action, a new barcodeScanner instance should be created and used
  5. For Android, if there is an active textbox (keyboard is visible), developer needs to close the keyboard before showing the scanner.

Permissions

For iOS, you have to add camera permission to Info.plist.

<key>NSCameraUsageDescription</key>
<string>${PRODUCT_NAME} Camera Usage</string>

For Android, you have to add camera permission to AndroidManifest.xml.

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

Sample

The folder sample holds the example codes. You can use it with the package.

Router.add("barcodeScanner", require("sf-extension-barcode/sample/barcodeScanner"));
Router.go("barcodeScanner");

Credits

This barcode library is based on:

  1. Android implementation: https://github.com/dm77/barcodescanner
  2. iOS implementation: https://github.com/TheLevelUp/ZXingObjC

Need Help?

Please submit an issue on GitHub and provide information about your problem.

Support & Documentation & Useful Links

Code of Conduct

We are committed to making participation in this project a harassment-free experience for everyone, regardless of the level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality. Please read and follow our Code of Conduct.

License

This project is licensed under the terms of the MIT license. See the LICENSE file. Within the scope of this license, all modifications to the source code, regardless of the fact that it is used commercially or not, shall be committed as a contribution back to this repository.