SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Mobile application security
Mobile application securityMobile application security
Mobile application security
Shubhneet Goel
 
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
Michael Palotas
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
ISsoft
 
Security Testing Mobile Applications
Security Testing Mobile ApplicationsSecurity Testing Mobile Applications
Security Testing Mobile Applications
Denim Group
 

Tendances (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
 

Similaire à 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 testingartifacts
Pragya 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
 
2012 java one-con3648
2012 java one-con36482012 java one-con3648
2012 java one-con3648
Eing Ong
 
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 Applications
Positive Hack Days
 

Similaire à 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
 

Dernier

Dernier (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

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