SlideShare a Scribd company logo
1 of 26
EUROPE
Developer Session
CREATE SCANNING APP
Across Multiple Android Devices
Pietro F. Maggi
EMEA SW Consultant Sales Engineer
Part 1: Basics and Getting Started
• Barcode Scanning on Zebra Devices
• Disabling EMDK code when running on a non Zebra device
Part 2: Guideline on going forward
• Scanning across Multiple Android devices
• Design Considerations
Create Scanning Application Across Multiple Android Devices
Outline
Part 1: Basics and Getting Started
• Barcode Scanning on Zebra Devices
• Disabling EMDK code when running on a non Zebra device
Part 2: Guideline on going forward
• Scanning across Multiple Android devices
• Design Considerations
Create Scanning Application Across Multiple Android Devices
Outline
DataWedge Intent API: Intent based interface for DataWedge
Pros:
• Based on standard Android Intent API.
• Features are exposed earlier in DW than Barcode API.
Cons:
• Full control requires DataWedge v6.3, only available on some Marshmallow devices.
• Not possible to backport newer DataWedge version on older BSP.
EMDK’s Barcode API: Java and Xamarin API Barcode scanning API
Pros:
• Full control of the Scanner Framework.
Cons:
• Complexity to handle Scanner lifecycle combined with Application lifecycle.
• “EMDK Service has stopped” issues if this API is not implemented correctly.
Barcode Scanning on Zebra Devices
With Great Power Comes Great Responsibility
Design Considerations : Barcode Integration
Do you really need a Barcode API?
Complexity
Control
DataWedge
Keyboard emulation
legacy DataWedge
Intents
DataWedge 6.3
Intents*
Barcode API
*Not yet released
Clone Profile2
Create Profile3
Delete Profile2
Enable DataWedge2
Enumerate Scanners1
Get Active Profile2
Get DataWedge Status3
Get Profiles List2
Get Version Info3
Register/Unregister for Notification3
Rename Profile2
Reset Default Profile1
Restore Config3
Scanner Input Plug-in1
Set Config3
Set Default Profile1
Soft Scan Trigger1
Switch to Profile1
DataWedge Intent API
Source: http://techdocs.zebra.com/datawedge/6-3/guide/api/
1 Original DW API
2 New in DW v6.2
3 New in DW v6.3
Part 1: Basics and Getting Started
• Barcode Scanning on Zebra Devices
• Disabling EMDK code when running on a non Zebra device
Part 2: Guideline on going forward
• Scanning across Multiple Android devices
• Design Considerations
Create Scanning Application Across Multiple Android Devices
Outline
Modify the Manifest to avoid
“Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY”
From:
To:
Install the Application
How can you use the EMDK but still being able to install the app on a non Zebra device
Source: http://techdocs.zebra.com/emdk-for-android/6-3/guide/programming_practices/
• Modify the main activity to avoid "ClassNotFoundException" exception
Install the Application (cont.)
How can you use the EMDK but still being able to install the app on a non Zebra device
Source: http://techdocs.zebra.com/emdk-for-android/6-3/guide/programming_practices/
Look for the package:
Directly checking for EMDK
Checking for EMDK package allows to get info about installed version
Source: http://techdocs.zebra.com/emdk-for-android/6-3/guide/programming_practices/
Use the package manager to get the information you need:
Directly checking for EMDK (Cont.)
Checking for EMDK package allows to get info about installed version
Source: https://github.com/pfmaggi/GetDeviceInfo_EMDK
Part 1: Basics and Getting Started
• Barcode Scanning on Zebra Devices
• Disabling EMDK code when running on a non Zebra device
Part 2: Guideline on going forward
• Scanning across Multiple Android devices
• Design Considerations
Create Scanning Application Across Multiple Android Devices
Outline
Zxing: “Zebra Crossing”
OpenSource Barcode Scanning Solutions
…one true king
Source: https://github.com/zxing/zxing/
• Zebra Technology Software Decode for Cameras
• Scandit library
Commercial Barcode Scanning Solutions
Some very good (and sometime expensive) options
Source:
https://www.zebra.com/us/en/products/oem/oem-engines/oem-software-decode/software-decode-for-cameras.html
https://www.scandit.com
Reimplement DataWedge Intent API on other platforms:
• Pros:
• Barcode Scanning became someone else problem
• Once a *Wedge is implemented for a platform/library, it can
support multiple application
• Cons:
• Requires a second application to be installed on the device
to have Barcode Scanning working
Scanning across Multiple Android devices
DataWedge Intent API –Yes a *Wedge
Source: https://darryncampbellblog.wordpress.com/2016/08/16/writing-enterprise-android-applications-that-capture-barcode-data-and-
run-on-multiple-devices/
Scanning across Multiple Android devices
DataWedge Intent API –Yes a *Wedge
Generic Interface:
• IScanner
• Handle Configuration
• Enable / Disable Scanner
• Start / Stop Barcode decoding
• IScannerListener
• Scan succeeds callback with data
• Scan failure callback with error condition (timeout, missing permission, etc.)
Multiple implementation with Enterprise SDK or Consumer Barcode decoding libraries
Scanning across Multiple Android devices
Barcode API implementation of a generic interface
Scanning across Multiple Android devices
Implementation of a generic interface
User Application Activities
Scanner
implementation
with Zebra
Barcode API
Zebra
Scanner
Zebra Device
Scanner
implementation
with Other
OEM API
Other OEM
Scanner
Enterprise Device,
non-Zebra
Scanner
implementation
with Zxing or
Google
BarcodeAPI
IScanner Interfaces
Device Camera
Consumer Device
IScannerListener Interfaces
Part 1: Basics and Getting Started
• Barcode Scanning on Zebra Devices
• Disabling EMDK code when running on a non Zebra device
Part 2: Guideline on going forward
• Scanning across Multiple Android devices
• Design Considerations
Create Scanning Application Across Multiple Android Devices
Outline
Barcode API
Async all the way…
• The scanner.enable() is an async call and app must wait for the IDLE status before
setting the configuration
• The scanner.cancelRead() is an async call and app must wait for the IDLE status
and check for isReadPending() before setting the configuration or issuing the next
read.
• The EMDKListener.onClosed() is called notify the application when the EMDK
service is stopped unexpectedly either due to low memory or any other crash at the
EMDK or Scanner Framework work.
Barcode API
Know before you start
Building multiple applications to install on a single device?
• Implement what you need in a ScanWedge
Design Considerations
Closing thoughts
Building a single application to install on an Android device?
• A Scanning interface with the implementation for your devices
• https://developer.zebra.com/community/android: Zebra developer Portal
• http://techdocs.zebra.com: Zebra Technical Documentation Portal
• http://techdocs.zebra.com/emdk-for-android/6-
3/guide/programming_practices/#creatingacommonapplicationtorunonzebraandnonz
ebradevices: EMDK for Android Guide
• https://github.com/darryncampbell/GenericScanWedge: ZXing based ScanWedge
implementation by @darryncampbell
Scanning Across Multiple Android Devices
Some key References
QUESTIONS?
Please take a moment to rate this session
using the APPFORUM mobile app.
THANK YOU

More Related Content

What's hot

Android security - an enterprise perspective
Android security -  an enterprise perspectiveAndroid security -  an enterprise perspective
Android security - an enterprise perspectivePietro F. Maggi
 
Consulthink @ GDG Meets U - L'Aquila2014 - Codelab: Android Security -Il ke...
Consulthink @ GDG Meets U -  L'Aquila2014  - Codelab: Android Security -Il ke...Consulthink @ GDG Meets U -  L'Aquila2014  - Codelab: Android Security -Il ke...
Consulthink @ GDG Meets U - L'Aquila2014 - Codelab: Android Security -Il ke...Consulthinkspa
 
Kadecot APIs overview
Kadecot APIs overviewKadecot APIs overview
Kadecot APIs overviewsonycsl
 
Dark Side of iOS [SmartDevCon 2013]
Dark Side of iOS [SmartDevCon 2013]Dark Side of iOS [SmartDevCon 2013]
Dark Side of iOS [SmartDevCon 2013]Kuba Břečka
 
Mobile application security
Mobile application securityMobile application security
Mobile application securityShubhneet Goel
 
Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?Bitbar
 
Mobile test automation with Selenium, Selendroid and ios-driver
Mobile test automation with Selenium, Selendroid and ios-driverMobile test automation with Selenium, Selendroid and ios-driver
Mobile test automation with Selenium, Selendroid and ios-driverMichael Palotas
 
2015.04.24 Updated > Android Security Development - Part 1: App Development
2015.04.24 Updated > Android Security Development - Part 1: App Development 2015.04.24 Updated > Android Security Development - Part 1: App Development
2015.04.24 Updated > Android Security Development - Part 1: App Development Cheng-Yi Yu
 
Testing Android Security Codemotion Amsterdam edition
Testing Android Security Codemotion Amsterdam editionTesting Android Security Codemotion Amsterdam edition
Testing Android Security Codemotion Amsterdam editionJose Manuel Ortega Candel
 
MonkeyTalk Documentation
MonkeyTalk DocumentationMonkeyTalk Documentation
MonkeyTalk DocumentationVivek Pansara
 
Mobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolMobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolVivek Pansara
 
Monkey talk
Monkey talkMonkey talk
Monkey talkISsoft
 
Introduction To Mobile-Automation
Introduction To Mobile-AutomationIntroduction To Mobile-Automation
Introduction To Mobile-AutomationMindfire Solutions
 
Security Testing Mobile Applications
Security Testing Mobile ApplicationsSecurity Testing Mobile Applications
Security Testing Mobile ApplicationsDenim Group
 
Fight back android fragmentation
Fight back android fragmentationFight back android fragmentation
Fight back android fragmentationBitbar
 
Mobile Application Security Testing, Testing for Mobility App | www.idexcel.com
Mobile Application Security Testing, Testing for Mobility App | www.idexcel.comMobile Application Security Testing, Testing for Mobility App | www.idexcel.com
Mobile Application Security Testing, Testing for Mobility App | www.idexcel.comIdexcel Technologies
 

What's hot (20)

Android security - an enterprise perspective
Android security -  an enterprise perspectiveAndroid security -  an enterprise perspective
Android security - an enterprise perspective
 
Consulthink @ GDG Meets U - L'Aquila2014 - Codelab: Android Security -Il ke...
Consulthink @ GDG Meets U -  L'Aquila2014  - Codelab: Android Security -Il ke...Consulthink @ GDG Meets U -  L'Aquila2014  - Codelab: Android Security -Il ke...
Consulthink @ GDG Meets U - L'Aquila2014 - Codelab: Android Security -Il ke...
 
Kadecot APIs overview
Kadecot APIs overviewKadecot APIs overview
Kadecot APIs overview
 
Dark Side of iOS [SmartDevCon 2013]
Dark Side of iOS [SmartDevCon 2013]Dark Side of iOS [SmartDevCon 2013]
Dark Side of iOS [SmartDevCon 2013]
 
Mobile application security
Mobile application securityMobile application security
Mobile application security
 
Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?
 
Mobile test automation with Selenium, Selendroid and ios-driver
Mobile test automation with Selenium, Selendroid and ios-driverMobile test automation with Selenium, Selendroid and ios-driver
Mobile test automation with Selenium, Selendroid and ios-driver
 
2015.04.24 Updated > Android Security Development - Part 1: App Development
2015.04.24 Updated > Android Security Development - Part 1: App Development 2015.04.24 Updated > Android Security Development - Part 1: App Development
2015.04.24 Updated > Android Security Development - Part 1: App Development
 
Testing Android Security Codemotion Amsterdam edition
Testing Android Security Codemotion Amsterdam editionTesting Android Security Codemotion Amsterdam edition
Testing Android Security Codemotion Amsterdam edition
 
Mind the gap
Mind the gapMind the gap
Mind the gap
 
MonkeyTalk Documentation
MonkeyTalk DocumentationMonkeyTalk Documentation
MonkeyTalk Documentation
 
Mobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolMobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk Tool
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
 
Introduction To Mobile-Automation
Introduction To Mobile-AutomationIntroduction To Mobile-Automation
Introduction To Mobile-Automation
 
Security Testing Mobile Applications
Security Testing Mobile ApplicationsSecurity Testing Mobile Applications
Security Testing Mobile Applications
 
Mobile Apps Security Testing -3
Mobile Apps Security Testing -3Mobile Apps Security Testing -3
Mobile Apps Security Testing -3
 
Fight back android fragmentation
Fight back android fragmentationFight back android fragmentation
Fight back android fragmentation
 
See test
See testSee test
See test
 
Mobile App Security Testing -2
Mobile App Security Testing -2Mobile App Security Testing -2
Mobile App Security Testing -2
 
Mobile Application Security Testing, Testing for Mobility App | www.idexcel.com
Mobile Application Security Testing, Testing for Mobility App | www.idexcel.comMobile Application Security Testing, Testing for Mobility App | www.idexcel.com
Mobile Application Security Testing, Testing for Mobility App | www.idexcel.com
 

Similar to Barcode scanning on Android

Android village @nullcon 2012
Android village @nullcon 2012 Android village @nullcon 2012
Android village @nullcon 2012 hakersinfo
 
Mobile testingartifacts
Mobile testingartifactsMobile testingartifacts
Mobile testingartifactsPragya Rastogi
 
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...Jason Conger
 
Cracking the mobile application code
Cracking the mobile application codeCracking the mobile application code
Cracking the mobile application codeSreenarayan A
 
Mobile Application Security
Mobile Application SecurityMobile Application Security
Mobile Application SecurityIshan Girdhar
 
2012 java one-con3648
2012 java one-con36482012 java one-con3648
2012 java one-con3648Eing Ong
 
Developing for Android-Types of Android Application
Developing for Android-Types of Android ApplicationDeveloping for Android-Types of Android Application
Developing for Android-Types of Android ApplicationNandini Prabhu
 
Reading Group Presentation: Why Eve and Mallory Love Android
Reading Group Presentation: Why Eve and Mallory Love AndroidReading Group Presentation: Why Eve and Mallory Love Android
Reading Group Presentation: Why Eve and Mallory Love AndroidMichael Rushanan
 
MobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android AppsMobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android AppsRon Munitz
 
Android Penetration testing - Day 2
 Android Penetration testing - Day 2 Android Penetration testing - Day 2
Android Penetration testing - Day 2Mohammed Adam
 
Phonegap Development & Debugging
Phonegap Development & DebuggingPhonegap Development & Debugging
Phonegap Development & DebuggingIvano Malavolta
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Ryan Cuprak
 
Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...
Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...
Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...GoIT
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsPositive Hack Days
 
C# Cookware - presented at CukeUp! 2014
C# Cookware - presented at CukeUp! 2014C# Cookware - presented at CukeUp! 2014
C# Cookware - presented at CukeUp! 2014Manuel Pais
 
Android Mobile Application Testing: Human Interface Guideline, Tools
Android Mobile Application Testing: Human Interface Guideline, ToolsAndroid Mobile Application Testing: Human Interface Guideline, Tools
Android Mobile Application Testing: Human Interface Guideline, ToolsSoftServe
 
Discover Android Wear
Discover Android WearDiscover Android Wear
Discover Android WearTroy Miles
 

Similar to Barcode scanning on Android (20)

Android village @nullcon 2012
Android village @nullcon 2012 Android village @nullcon 2012
Android village @nullcon 2012
 
Mobile testingartifacts
Mobile testingartifactsMobile testingartifacts
Mobile testingartifacts
 
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
Building your Own Mobile Enterprise Application: It’s Not as Hard as You Migh...
 
Cracking the mobile application code
Cracking the mobile application codeCracking the mobile application code
Cracking the mobile application code
 
What is WebIDE?
What is WebIDE?What is WebIDE?
What is WebIDE?
 
Mobile Application Security
Mobile Application SecurityMobile Application Security
Mobile Application Security
 
2012 java one-con3648
2012 java one-con36482012 java one-con3648
2012 java one-con3648
 
Developing for Android-Types of Android Application
Developing for Android-Types of Android ApplicationDeveloping for Android-Types of Android Application
Developing for Android-Types of Android Application
 
Reading Group Presentation: Why Eve and Mallory Love Android
Reading Group Presentation: Why Eve and Mallory Love AndroidReading Group Presentation: Why Eve and Mallory Love Android
Reading Group Presentation: Why Eve and Mallory Love Android
 
MobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android AppsMobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android Apps
 
Android Penetration testing - Day 2
 Android Penetration testing - Day 2 Android Penetration testing - Day 2
Android Penetration testing - Day 2
 
Phonegap Development & Debugging
Phonegap Development & DebuggingPhonegap Development & Debugging
Phonegap Development & Debugging
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
 
Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...
Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...
Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android Applications
 
C# Cookware - presented at CukeUp! 2014
C# Cookware - presented at CukeUp! 2014C# Cookware - presented at CukeUp! 2014
C# Cookware - presented at CukeUp! 2014
 
Android Mobile Application Testing: Human Interface Guideline, Tools
Android Mobile Application Testing: Human Interface Guideline, ToolsAndroid Mobile Application Testing: Human Interface Guideline, Tools
Android Mobile Application Testing: Human Interface Guideline, Tools
 
Cracking the Mobile Application Code
Cracking the Mobile Application CodeCracking the Mobile Application Code
Cracking the Mobile Application Code
 
Discover Android Wear
Discover Android WearDiscover Android Wear
Discover Android Wear
 
Android pentesting
Android pentestingAndroid pentesting
Android pentesting
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...ScyllaDB
 
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfFrisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfAnubhavMangla3
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxFIDO Alliance
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuidePixlogix Infotech
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxMarkSteadman7
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....rightmanforbloodline
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingScyllaDB
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Skynet Technologies
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfalexjohnson7307
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptxFIDO Alliance
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)Wonjun Hwang
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfdanishmna97
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...panagenda
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxFIDO Alliance
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityVictorSzoltysek
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 

Recently uploaded (20)

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfFrisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 

Barcode scanning on Android

  • 2. Developer Session CREATE SCANNING APP Across Multiple Android Devices Pietro F. Maggi EMEA SW Consultant Sales Engineer
  • 3. Part 1: Basics and Getting Started • Barcode Scanning on Zebra Devices • Disabling EMDK code when running on a non Zebra device Part 2: Guideline on going forward • Scanning across Multiple Android devices • Design Considerations Create Scanning Application Across Multiple Android Devices Outline
  • 4. Part 1: Basics and Getting Started • Barcode Scanning on Zebra Devices • Disabling EMDK code when running on a non Zebra device Part 2: Guideline on going forward • Scanning across Multiple Android devices • Design Considerations Create Scanning Application Across Multiple Android Devices Outline
  • 5. DataWedge Intent API: Intent based interface for DataWedge Pros: • Based on standard Android Intent API. • Features are exposed earlier in DW than Barcode API. Cons: • Full control requires DataWedge v6.3, only available on some Marshmallow devices. • Not possible to backport newer DataWedge version on older BSP. EMDK’s Barcode API: Java and Xamarin API Barcode scanning API Pros: • Full control of the Scanner Framework. Cons: • Complexity to handle Scanner lifecycle combined with Application lifecycle. • “EMDK Service has stopped” issues if this API is not implemented correctly. Barcode Scanning on Zebra Devices With Great Power Comes Great Responsibility
  • 6. Design Considerations : Barcode Integration Do you really need a Barcode API? Complexity Control DataWedge Keyboard emulation legacy DataWedge Intents DataWedge 6.3 Intents* Barcode API *Not yet released
  • 7. Clone Profile2 Create Profile3 Delete Profile2 Enable DataWedge2 Enumerate Scanners1 Get Active Profile2 Get DataWedge Status3 Get Profiles List2 Get Version Info3 Register/Unregister for Notification3 Rename Profile2 Reset Default Profile1 Restore Config3 Scanner Input Plug-in1 Set Config3 Set Default Profile1 Soft Scan Trigger1 Switch to Profile1 DataWedge Intent API Source: http://techdocs.zebra.com/datawedge/6-3/guide/api/ 1 Original DW API 2 New in DW v6.2 3 New in DW v6.3
  • 8. Part 1: Basics and Getting Started • Barcode Scanning on Zebra Devices • Disabling EMDK code when running on a non Zebra device Part 2: Guideline on going forward • Scanning across Multiple Android devices • Design Considerations Create Scanning Application Across Multiple Android Devices Outline
  • 9. Modify the Manifest to avoid “Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY” From: To: Install the Application How can you use the EMDK but still being able to install the app on a non Zebra device Source: http://techdocs.zebra.com/emdk-for-android/6-3/guide/programming_practices/
  • 10. • Modify the main activity to avoid "ClassNotFoundException" exception Install the Application (cont.) How can you use the EMDK but still being able to install the app on a non Zebra device Source: http://techdocs.zebra.com/emdk-for-android/6-3/guide/programming_practices/
  • 11. Look for the package: Directly checking for EMDK Checking for EMDK package allows to get info about installed version Source: http://techdocs.zebra.com/emdk-for-android/6-3/guide/programming_practices/
  • 12. Use the package manager to get the information you need: Directly checking for EMDK (Cont.) Checking for EMDK package allows to get info about installed version Source: https://github.com/pfmaggi/GetDeviceInfo_EMDK
  • 13. Part 1: Basics and Getting Started • Barcode Scanning on Zebra Devices • Disabling EMDK code when running on a non Zebra device Part 2: Guideline on going forward • Scanning across Multiple Android devices • Design Considerations Create Scanning Application Across Multiple Android Devices Outline
  • 14. Zxing: “Zebra Crossing” OpenSource Barcode Scanning Solutions …one true king Source: https://github.com/zxing/zxing/
  • 15. • Zebra Technology Software Decode for Cameras • Scandit library Commercial Barcode Scanning Solutions Some very good (and sometime expensive) options Source: https://www.zebra.com/us/en/products/oem/oem-engines/oem-software-decode/software-decode-for-cameras.html https://www.scandit.com
  • 16. Reimplement DataWedge Intent API on other platforms: • Pros: • Barcode Scanning became someone else problem • Once a *Wedge is implemented for a platform/library, it can support multiple application • Cons: • Requires a second application to be installed on the device to have Barcode Scanning working Scanning across Multiple Android devices DataWedge Intent API –Yes a *Wedge Source: https://darryncampbellblog.wordpress.com/2016/08/16/writing-enterprise-android-applications-that-capture-barcode-data-and- run-on-multiple-devices/
  • 17. Scanning across Multiple Android devices DataWedge Intent API –Yes a *Wedge
  • 18. Generic Interface: • IScanner • Handle Configuration • Enable / Disable Scanner • Start / Stop Barcode decoding • IScannerListener • Scan succeeds callback with data • Scan failure callback with error condition (timeout, missing permission, etc.) Multiple implementation with Enterprise SDK or Consumer Barcode decoding libraries Scanning across Multiple Android devices Barcode API implementation of a generic interface
  • 19. Scanning across Multiple Android devices Implementation of a generic interface User Application Activities Scanner implementation with Zebra Barcode API Zebra Scanner Zebra Device Scanner implementation with Other OEM API Other OEM Scanner Enterprise Device, non-Zebra Scanner implementation with Zxing or Google BarcodeAPI IScanner Interfaces Device Camera Consumer Device IScannerListener Interfaces
  • 20. Part 1: Basics and Getting Started • Barcode Scanning on Zebra Devices • Disabling EMDK code when running on a non Zebra device Part 2: Guideline on going forward • Scanning across Multiple Android devices • Design Considerations Create Scanning Application Across Multiple Android Devices Outline
  • 21. Barcode API Async all the way…
  • 22. • The scanner.enable() is an async call and app must wait for the IDLE status before setting the configuration • The scanner.cancelRead() is an async call and app must wait for the IDLE status and check for isReadPending() before setting the configuration or issuing the next read. • The EMDKListener.onClosed() is called notify the application when the EMDK service is stopped unexpectedly either due to low memory or any other crash at the EMDK or Scanner Framework work. Barcode API Know before you start
  • 23. Building multiple applications to install on a single device? • Implement what you need in a ScanWedge Design Considerations Closing thoughts Building a single application to install on an Android device? • A Scanning interface with the implementation for your devices
  • 24. • https://developer.zebra.com/community/android: Zebra developer Portal • http://techdocs.zebra.com: Zebra Technical Documentation Portal • http://techdocs.zebra.com/emdk-for-android/6- 3/guide/programming_practices/#creatingacommonapplicationtorunonzebraandnonz ebradevices: EMDK for Android Guide • https://github.com/darryncampbell/GenericScanWedge: ZXing based ScanWedge implementation by @darryncampbell Scanning Across Multiple Android Devices Some key References
  • 26. Please take a moment to rate this session using the APPFORUM mobile app. THANK YOU