This is a step by step tutorial showing how to use your device camera as a barcode scanner in SAPUI5 Hybrid Mobile App with SAP Web IDE and hybrid app toolkit.We make use of kapsel barcode scanner plugin.This plugin enables Hybrid SDK applications to scan and decode a barcode using the device camera.The plugin support android and ios platforms.For more information and list of supported barcode types visit https://github.com/wildabeast/BarcodeScanner.
We will continue with our previous tutorial app here How to Create SAPUI5 Hybrid Mobile App with SAP Web IDE?.
Pre-requisites
Steps
We will continue with our previous tutorial app here How to Create SAPUI5 Hybrid Mobile App with SAP Web IDE?.
Pre-requisites
- Windows system setup with SAP Mobile Platform SDK installed and Hybrid App Toolkit configured.(If not setup already visit my blog post Windows System Setup for Developing Mobile Apps with SAPWebIDE and SAP Mobile SDK )
- Created basic SAPUI5 Hybrid Mobile App(If you haven't created one yet follow previous blog How to Create SAPUI5 Hybrid Mobile App with SAP Web IDE).
Steps
- Start HAT Connector ,Open SAP Web IDE and check HAT connectity is avialable.If not familiar follow pre-requisites 2 section.
- Right click on project folder and choose Project Settings.Go to Hybrid App Toolkit->Hybrid App Configuration.Under Plugins section tick mark Kapsel Barcode Scanner plugin and press save button.
- Time to code.Open View1.view.xml file(Your file name may be different if you have changed name of view).In the view add two sap.m.Button controls.One for scanning barcode and one for encoding a predefined text to QR code.Then add one sap.m.Textcontrol to show the scanned barcode value.My view code is below.The button's press event is used for calling the scan and encode methods of Kapsel Barcode Scanner api.
- Open View1.controller.js.Inside onScan method we will call scan method of cordova barcode scanner plugin.Below is my controller logic.In the success handler set the Text control's text attribute by using setText() method.
- To test the App Right Click ->Run->Run on Local Device/Simulator->Android Device.Testing on emulator may not work properly because of lack of camera in emulator.
- See screenshots taken before and after scanning a barcode and see generated QRcode also.
<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="myFirstMobileApp.view.View1" xmlns:html="http://www.w3.org/1999/xhtml"> <Page title="BarCodeReader"> <content> <HBox justifyContent="SpaceAround"> <items> <Button text="Scan" press="onScan"></Button> <Button text="Encode" press="onEncode"></Button> </items> </HBox> <HBox width="100%" justifyContent="Center"> <items> <Text text="" id="myBarCode"></Text> </items> </HBox> </content> </Page> </core:View>
sap.ui.controller("myFirstMobileApp.view.View1", { oView: null, onInit: function() { oView = this.getView(); }, onScan: function() { var options = { preferFrontCamera: false, // iOS and Android showFlipCameraButton: true, // iOS and Android showTorchButton: true, // iOS and Android torchOn: true, // Android, launch with the torch switched on (if available) prompt: "Place barcode inside the scan area", // Android resultDisplayDuration: 500, // Android, display scanned text for X ms. 0 suppresses it entirely, default 1500 formats: "QR_CODE,PDF_417,UPC_A", // default: all but PDF_417 and RSS_EXPANDED orientation: "landscape", // Android only (portrait|landscape), default unset so it rotates with the device disableAnimations: true // iOS }; cordova.plugins.barcodeScanner.scan(this.onScanSuccess, this.onScanError, options); }, onScanSuccess: function(result) { var oText = oView.byId("myBarCode"); oText.setText("barcode is " + result.text + " and format is " + result.format); alert(JSON.stringify(result)); }, onScanError: function(error) { alert("error" + JSON.stringify(error)); }, onEncode: function() { cordova.plugins.barcodeScanner.encode(cordova.plugins.barcodeScanner.Encode.TEXT_TYPE, "http://www.techippo.com", this.onEncodeSuccess, this.onEncodeFail ); }, onEncodeSuccess: function(success) { alert("encode success: " + JSON.stringify(success)); }, onEncodeFail: function(fail) { alert("encoding failed: " + JSON.stringify(fail)); } });
If you enjoyed this post, Please Share!!
Hi,
ReplyDeleteI am able to use barcode scanner in webide. But when i deploy the application to Fiori launchpad, cordova is undefined.
can anyone help :(
Thanks,
Chandrasen
Try using it with fiori client.The plugin will work only in mobile devices.
Deletenice
ReplyDelete