cognex mobile barcode sdk for android (v2.3.x)

37
title: Cognex Mobile Barcode SDK for Android (v2.3.x) ; ver: 2.6.x 1 / 37 Cognex Mobile Barcode SDK for Android (v2.3.x) Barcode Scanning with a Smartphone or Tablet The differences in the capabilities of smartphones as barcode scanning devices result in a user experience different from purpose-built scanners, impacting the design of the mobile barcode scanning application. By following a few simple guidelines, you can develop applications with the cmbSDK that work the same way when using an MX Mobile Terminal or the built-in camera of a mobile device. To initiate barcode scanning without a dedicated hardware trigger, see Mobile Device Trigge ring . To aim for barcode scanning with a smartphone that does not have an aimer, see Mobile Device Aiming . To choose the most suitable orientation for barcode scanning, see Mobile Device Orientation . To reduce the CPU usage of the mobile device when it performs image analysis and barcode decoding, see Optimizing Mobile Device Performance . CmbSDK employs a default set of options for barcode reading with the built-in camera of the mobile device. However, cmbSDK does not implement saved configurations for the camera reader. This means that every time an application starts that uses the camera reader, it starts with the default settings of the camera reader. For a list of the default settings, see the Appendix . Overview Cognex Mobile Barcode SDK (cmbSDK) is a tool for developing mobile barcode scanning applications. CmbSDK is based on Cognex's DataMan technology and the Manatee Works Barcode Scanning SDK and it allows you to create barcode scanning applications for mobile devices. Mobile devices used for barcode scanning range from smartphones to the MX Series industrial barcode readers. CmbSDK abstracts the device through a ReaderDevice connection layer. Once the application establishes its connection with the reader, a single, unified API is used as interface to configure the device, eliminating the need to write too much conditional code. CmbSDK provides two basic ReaderDevice connection layers: MX reader for barcode scanning with devices like the MX-1000 and MX-1502 Camera reader for barcode scanning with the built-in camera of the mobile device Barcode Scanning with an MX Mobile Terminal

Upload: others

Post on 15-Feb-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 1/37

CognexMobileBarcodeSDKforAndroid(v2.3.x)

BarcodeScanningwithaSmartphoneorTablet

Thedifferencesinthecapabilitiesofsmartphonesasbarcodescanningdevicesresultinauserexperiencedifferentfrompurpose-builtscanners,impactingthedesignofthemobilebarcodescanningapplication.Byfollowingafewsimpleguidelines,youcandevelopapplicationswiththecmbSDKthatworkthesamewaywhenusinganMXMobileTerminalorthebuilt-incameraofamobiledevice.

Toinitiatebarcodescanningwithoutadedicatedhardwaretrigger,seeMobileDeviceTriggering.Toaimforbarcodescanningwithasmartphonethatdoesnothaveanaimer,seeMobileDeviceAiming.Tochoosethemostsuitableorientationforbarcodescanning,seeMobileDeviceOrientation.ToreducetheCPUusageofthemobiledevicewhenitperformsimageanalysisandbarcodedecoding,seeOptimizingMobileDevicePerformance.

CmbSDKemploysadefaultsetofoptionsforbarcodereadingwiththebuilt-incameraofthemobiledevice.However,cmbSDKdoesnotimplementsavedconfigurationsforthecamerareader.Thismeansthateverytimeanapplicationstartsthatusesthecamerareader,itstartswiththedefaultsettingsofthecamerareader.Foralistofthedefaultsettings,seetheAppendix.

Overview

CognexMobileBarcodeSDK(cmbSDK)isatoolfordevelopingmobilebarcodescanningapplications.CmbSDKisbasedonCognex'sDataMantechnologyandtheManateeWorksBarcodeScanningSDKanditallowsyoutocreatebarcodescanningapplicationsformobiledevices.MobiledevicesusedforbarcodescanningrangefromsmartphonestotheMXSeriesindustrialbarcodereaders.CmbSDKabstractsthedevicethroughaReaderDeviceconnectionlayer.Oncetheapplicationestablishesitsconnectionwiththereader,asingle,unifiedAPIisusedasinterfacetoconfigurethedevice,e liminatingtheneedtowritetoomuchconditionalcode.

CmbSDKprovidestwobasicReaderDeviceconnectionlayers:

MXreaderforbarcodescanningwithdevicesliketheMX-1000andMX-1502Camerareaderforbarcodescanningwiththebuilt-incameraofthemobiledevice

BarcodeScanningwithanMXMobileTerminal

Page 2: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 2/37

ThecmbSDKsupportsCognex’sMXSeriesMobileTerminalsandsomeoftheirfeaturesusingcmbSDKarethefollowing:

Hardwaret rigger:MXMobileTerminalsincludetwobuilt-intriggersforbarcodescanning.Theyalsosupportapistolgripwithtriggerthatisanoptionalaccessory.Illuminat ionandaiming:MXMobileTerminalshavebuilt-inilluminationandaiming,makingitunnecessarytohavealivepreviewonthesmartphone'sscreen.Conf igurat ions:YoucanexportandimportconfigurationsetstoMXMobileTerminalsusingCognex’sDataManSetupToolforWindows,theQuickSetupmobileapplicationorcmbSDK.Youcanhavemultiplescanningapplications,eachofwhichrequiresadifferentsetofdevicesettings.High-capacitybat tery:MXMobileTerminalshaveanintegratedbatterythatpowerstheMXscanningengineandthemobiledevice.TheoptionalpistolgripincludesasecondbatterythatdoublesthepowercapacityoftheMXMobileTerminal.

DebuggingonMXMobileTerminal

Normallyyouconnectyourmobiledevice(phoneortablet)toyourPCviatheUSBorlightningporttostartdebugging.IfanMXMobileTerminalisattachedtoyourmobiledeviceviatheUSBorlightningportwhileyourapplicationisrunning,youneedtodebugyourapplicationviaWi-Fi.

DebuggingonAndroid:

TodebugusingAndroidStudio,connectyourAndroiddeviceviaUSBtoyourPCandmakesureyoucanrunanddebugyourapplicationusingtheUSBcable.ToConnectyourAndroiddevicetoWi-Fi,makesurethatAndroidToolsareinstalledbesideyourIDE.

1. Type"adbtcpip5555"tosetthedevice'sportto5555intheterminal.2. Getthemobiledevice'sIPaddressbytyping"adbshellip-f inet addrshow

wlan0"orfinditmanuallyinthesettingsmenuofyourmobiledevice.3. Type"adbconnect device_ip:5555"toconnecttoyourmobiledevice.Thisprompts

amessageifitisconnectedsuccessfully.4. DisconnecttheUSBcablefromyourmobiledevice.5. ConnectyourmobiledevicetotheMXMobileTerminalandproceedtodebugyour

appasifitwasconnectedviacable.

Note:AfteryouconnectyourmobiledevicetotheMXMobileTerminal,Wi-Ficonnectionmightbelost.IftheWi-Ficonnectionislost,repeatstep3.

6. Whenyouaredone,type"adb-sdevice_ip:5555usb"toswitchyourdevicebacktoUSBconnectionmode.

Page 3: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 3/37

CAUTION:Leavingthewirelessdebuggingoptionenabledisnotrecommendedasanyoneinyournetworkcanconnecttoyourdeviceindebug,evenifyouareindatanetwork.DoitonlywhenyouareconnectedtoatrustedWiFianddisconnectwhenyouaredone.

BarcodeScanningwithaSmartphone

MobileDeviceTriggering

Withoutahardwaretrigger,mobiledevicesmustusealternativemethodstoinitiatebarcodescanning.ThecmbSDKsupportsthreemethodstotriggerbarcodescanning:

Applicat ionorworkf lowdrivent rigger:Theapplicationcodeorthebusinesslogic/workflowoftheapplicationinvokesthescanningmodule.Insimpleprogrammingterms,itiscallingafunctionlikestartScanner().Virtualt rigger:Tostartorstopthescanningprocesstheapplicationprovidesabuttononthescreen.Dependingontheapplicationdesign,youneedtopressandholdthevirtualbuttontokeepthescannerrunning,thisinvokesthescanningmodule.Simulatedt rigger:Pressoneofthevolume-downbuttonstostartorstopthescanningprocessjustlikewhenyoupullatriggeronapurpose-builtscanner.

MobileDeviceAiming

Thebuilt-incameraprovidesalive-streampreviewonthedisplayofthemobiledeviceforbarcodeaiming.Repositionthemobiledeviceuntilthebarcodeappearsinthefie ldofviewofthebuilt-incameraandtheapplicationdecodesit.CmbSDKprovidesabuilt-inpreviewcontrolthatcanbedisplayedinpartialorfullscreen,andineitherportraitorlandscapeorientation.

ThecmbSDKalsosupportspassiveaimers:devicesattachedtothemobiledeviceoritscasethatusetheLEDflashofthedeviceasalightsourcetoprojectanaimingortargetingpattern.Themobiledevicecanprojectanaimerpatternsimilartoapurpose-builtscannersolive-previewisnotneeded.However,byusingtheLEDflashasanaimer,generalscanningilluminationisnotavailable.

MobileDeviceOrientat ion

ThecmbSDKsupportsportraitorientation,landscapeorientationandauto-rotationforboththepresentationofthebarcodepreviewandthescandirection.Mobiledevicescanscanmostbarcodesregardlessoftheorientationoftheapplicationand/orthemobiledevice.

Page 4: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 4/37

PORTRAIT ORLANDSCAPE PORTRAIT ONLY

Mostbarcodescanbescannedineither

portraitorlandscapeorientation.

Mostwelldefinedandmoderatelysizedbarcodescanbescannedinaportrait

orientation,whichisthemostnaturalwaytoholdthemobiledevice.

Example:QR,DataMatrix,Maxicode.

Long,dense,orpoorlyformedbarcodesareeasiertoscaninalandscapeorientation,whichisof

OptimizingMobileDevicePerformance

Mobiledevicesareanidealplatformforbarcodedecoding.ThecmbSDKisoptimizedformobileenvironment,butimageanalysisandbarcodedecodingisstillaCPUintensiveactivity.Sincetheseprocessessharethemobiledevice'sCPUwiththemobileoperatingsystem(OS),services,andotherapplications,theseprocessesoptimizeyourbarcodescanningapplicationandlimitittoonlyusingthefeaturesofthecmbSDKthattheyneed.

Tooptimizeyourapplication:

Enabledecodingonlyforthebarcodetypestheapplicationneedstoscan.ThecmbSDKsupportsthedecodingofalmost40differentbarcodetypesandsubtypes,enablingallresultsinlowperformanceandunexpectederrors.Donotenablecertainsymbologiesand/oradvancedfeaturesatthesametime.Optimizeyourcameraresolution.Bydefault,thecmbSDKusesHDimagesforbarcodedecoding.Useanappropriatedecodereffortlevel.ThecmbSDKhasaconfigurableeffortlevelthatcontrolshowaggressivelyitperformsimageanalysis.ThecmbSDKusesadefaultvalue(level2)thatissufficientformostbarcodes.Usingahigherlevelcanresultinbetterdecodingofpoorerqualitybarcodes,resultinginslowerperformance.

Nobarcodesymbologiesareenabledbydefault,whenthecmbSDKisinitializedforusewiththemobiledevice'sbuilt-incamera.

UsingcmbSDK

InstallingcmbSDK

InstallingtheAndroidcmbSDK

Page 5: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 5/37

Note:cmbSDKiscompatiblewithAndroidStudio.

1. DownloadtheCognexMobileBarcodeSDKforAndroidfromtheCognexMobileBarcodeScannerSolutionspage.

2. StartAndroidStudioandaddtheSDKAARfile asamoduletoyourproject:

1. Rightclickyourappmodule,selectNew>Module>Import.JAR/.AARPackage,andclickNext .

2. BrowsethecmbSDK.AARfile intheFilenamefie ld,andclickFinish.

3. Afterthenewmoduleisavailable,rightclickyourappmodule,selecttheOpenModuleSet t ings,andchoosetheDependenciestab.

4. Clickthe+signatthetopoftheDeclaredDependenciesdialogboxandselectthe3Moduledependency.

5. SelectcmbsdklibfromthepopupwindowandclickOK,makingthecmbsdklibmoduleavailableundertheDependenciestab.

6. InstalltheMXConnectapplicationfromthePlayStoretocommunicatewithMXmobileterminals.

InstallingtheiOScmbSDK:

1. InstallthelatestXCodeforiOSDevelopment.2. DownloadtheCognexMobileBarcodeSDKforiOS.

LicensingcmbSDK

Page 6: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 6/37

TousecmbSDKforbarcodescanningwithamobiledevicewithoutanMXmobileterminal,youneedtoinstallalicensekey.Ifthelicensekeyismissing,asteriskswillappearinsteadofscannedresults.

ContactyourCognexSalesRepresentativeforinformationonhowtoobtainalicensekey,including30-daytriallicenses.

Android:

1. Afterobtainingyourlicensekey,addthefollowinglineintheAndroidManifest.xmlfileofyourapplicationundertheapplicationtag:

<meta-dataandroid:name="MX_MOBILE_LICENSE"android:value="YOUR_MX_MOBILE_LICENSE"/>

2. ReplaceYOUR_MX_MOBILE_LICENSEwithyourlicensekey.

<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher"android:supportsRtl="true"android:theme="@style/AppTheme"><activityandroid:name=".ScannerActivity"android:configChanges="orientation|screenSize"><intent-filter><actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity>

<meta-dataandroid:name="MX_MOBILE_LICENSE"android:value="g/9ytJzcja+sxt4DTEDxR4hp6sZh9bmL97vUx+EE9uY="/>

</application>

YoucanalsoaddthelicensekeybycopyingthetextbelowwhenyoucreatenewinstancefromReaderDevice.

casePhoneCamera:readerDevice=ReaderDevice.getPhoneCameraDevice(this,param_cameraMode,PreviewOption.DEFAULTS,null,"SDK_KEY");

iOS:

Page 7: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 7/37

Afterobtainingyourlicensekey,additasaStringinyourapplication'sInfo.plistfile underthekeyMX_MOBILE_LICENSE.

Migrat ingfromaDataManSDKforMXReaderstocmbSDK

1. InstalltheMXConnectapplicationfromthePlaystore.ThisappenablesyourmobilephonetoseamlesslyconnecttoCognexMXreaders.

2. InstallcmbSDKtoyourproject.

3. UseDataManSystem.createDataManSystemForMXDevice()factorymethodtocreateaDatamanSystemobject.

4. Remove:

AllDataManSystem.createDataManSystemOverUsb()methodsfromyourproject.AllDataManSystem.createDataManSystemOverUsbAccessory()methodsfromyourproject.USB_DEVICE-ATTACHEDandUSB_ACCESSORY_ATTACHEDIntentfiltersandmeta-datafromtheAndroidManifest.xmlfile .USBandaccessorydescriptorxmlfilesfromtheXMLfolder.

Writ ingaMobileApplicat ion

CmbSDKprovidesahigh-level,abstractinterfaceforsupportedscanningdevices:theMXmobileterminalsandthecameraofthemobilephone.

TheprimaryinterfacebetweenyourapplicationandthebarcodescanningdeviceistheReaderDeviceclass.TheReaderDeviceclassrepresentsanabstractionlayertothe

Page 8: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 8/37

device,handlingallcommunicationandnecessaryhardwaremanagement,suchasscanningwithasmartphone.

PerformthefollowingstepstousecmbSDK:

1. CreateaninstancefromtheReaderDeviceclasswiththetypeofscanningdeviceyouwanttouse(MXreaderorcamerareader).

2. ConnecttotheReaderDeviceinstanceyoucreated.

3. ConfiguretheReaderDeviceinstance,ifnecessary.

4. Startscanning.

Initializationandconnectionneedtobeperformedonlyonceinyourapplication.

MXmobileterminalsneedtobereconfigurediftheybecomedisconnectedduetoforexampletimingoutordrainedbattery.Toavoidthis,youcansavetheconfiguration.YourapplicationcanusebothanMXmobileterminalandcamerascanning.Inthiscaseyouhavetoestablishanewconnectiontoadifferentdeviceafterdisconnectingfromthecurrentdevice.Youcancheckoursampleappfordemonstrationtoseehowitworks.

Sett ingupanApplicat iontoUsecmbSDKforAndroid

PerformthefollowingstepstosetupandstartusingcmbSDK:

1. Importthefollowingpackagemembers,orjusttheclassesyouuse:

importcom.cognex.dataman.sdk.*importcom.cognex.mobile.barcode.sdk.*

2. BuildyourUIaccordingtoyourneeds,butconsideringthefollowingaspects:

Youhavetodecideifyouyouwanttoshowpartialorafullscreen(thatisthedefault)camerapreview.YouneedaViewGroupcontainertousepartialpreview,forexampleRelat iveLayout .Noadditionalcontainerisneededforfullscreenpreview.

Page 9: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 9/37

Oursampleapp(thatyoucanfindinthecmbSDKbundle)isusingfullscreenpreview.Tochangethesampleapptousepartialview,addthefollowingRelat iveLayout attheendofConst raintLayoutinact ivity_scanner.xmlfile .UsethislayoutadaViewGroupparameterinreaderdeviceconstructor(getPhoneCameraDevice)whenreaderdeviceisinitialized.

<RelativeLayoutandroid:id="@+id/rlPreviewContainer"android:layout_width="match_parent"android:layout_height="200dp"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintStart_toEndOf="parent"/>

Todisplaythelastscannedimage,anImageViewcontainerisneeded.Todisplaythescannedresultasatext,aTextViewisneeded.

3. Setupthefollowinginterfacestomonitortheconnectionstateofthereaderandreceiveinformationaboutthereadcode:

publicclassScannerActivityextendsAppCompatActivityimplementsOnConnectionCompletedListener,ReaderDeviceListener,ActivityCompat.OnRequestPermissionsResultCallback{....

//Theconnectmethodhascompleted,hereyoucanseewhethertherewasanerrorwithestablishingtheconnectionornot@OverridepublicvoidonConnectionCompleted(ReaderDevicereaderDevice,Throwableerror){//Ifwehavevalidconnectionerrorparamwillbenull,//otherwisehereiserrorthatinformusaboutissuethatwehavewhileconnectingtoreaderdeviceif(error!=null){

//askforCameraPermissionifnecessaryif(errorinstanceofCameraPermissionException)ActivityCompat.requestPermissions(((ScannerActivity)this),newString[]{Manifest.permission.CAMERA},REQUEST_PERMISSION_CODE);

updateUIByConnectionState();}}

//Thisiscalledwhenaconnectionwiththeself.readerDevicehasbeenchanged.//ThereaderDeviceisusableonlyinthe"ConnectionState.Connected"state@OverridepublicvoidonConnectionStateChanged(ReaderDevicereader){clearResult();if(reader.getConnectionState()==ConnectionState.Connected){//Wejustconnected,sonowconfigurethedevicehowwewantitconfigureReaderDevice();

Page 10: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 10/37

}

isScanning=false;updateUIByConnectionState();}

//Thisiscalledafterscanninghascompleted,eitherbydetectingabarcode,cancelingthescanbyusingtheon-screenbuttonorahardwaretriggerbutton,orifthescanningtimed-out@OverridepublicvoidonReadResultReceived(ReaderDevicereaderDevice,ReadResultsresults){clearResult();

if(results.getSubResults()!=null&&results.getSubResults().size()>0){for(ReadResultsubResult:results.getSubResults()){createResultItem(subResult);}}elseif(results.getCount()>0){createResultItem(results.getResultAt(0));}

isScanning=false;btnScan.setText("STARTSCANNING");resultListAdapter.notifyDataSetChanged();}

//ThisiscalledwhenaMX-1xxxdevicehasbecameavailable(USBcablewasplugged,orMXdevicewasturnedon),//orwhenaMX-1xxxthatwaspreviouslyavailablehasbecomeunavailable(USBcablewasunplugged,turnedoffduetoinactivityorbatterydrained)@OverridepublicvoidonAvailabilityChanged(ReaderDevicereader){if(reader.getAvailability()==Availability.AVAILABLE){connectToReaderDevice();}elseif(reader.getAvailability()==Availability.UNAVAILABLE){AlertDialog.Builderalert=newAlertDialog.Builder(this);alert.setTitle("Devicebecameunavailable").setPositiveButton("OK",null).create().show();}}

4. InstantiateaReaderDeviceobject.

UsingtheMXReader

InitializeaReaderDeviceobjectforMXreadersusingthefollowingfactorymethod:

caseMX:readerDevice=ReaderDevice.getMXDevice(this);

//ListenwhenaMXdevicehasbecameavailable/unavailable

Page 11: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 11/37

if(!availabilityListenerStarted){readerDevice.startAvailabilityListening();availabilityListenerStarted=true;}

TheavailabilityoftheMXmobileterminalcanchangewhenthedeviceturnsonoroff,oriftheUSBcablegetsconnectedordisconnected.YoucanhandlethosechangesusingthefollowingReaderDeviceListenerinterfacemethod:

publicvoidonAvailabilityChanged(ReaderDevicereader);

UsingtheCameraReader

YouarerecommendedtouseanMXmobileterminaltoscanbarcodes.However,cmbSDKalsosupportsusingthebuilt-incameraofamobiledevice.Thisincludesthesupportofoptionalexternalaimersorillumination,andthecustomizationofthelive-streampreview'sappearance.

Toscanbarcodesusingthebuilt-incameraofamobiledevice,initializetheReaderDeviceobjectusingthegetPhoneCameraDevicestaticmethod.Thecamerareaderhasseveraloptionswheninitialized.Thefollowingparametersarerequired:

ContextCameraModePreviewOptionViewGroupRegistrationKeyCustomData

TheContextparameterprovidesareferencetotheactivityyouarecurrentlyin.

TheCameraModeparameterisoftypeCameraModedefinedinCameraMode.javaanditacceptsoneofthevalueslistedinthefollowingtable.

Thesemodesprovidethefollowingdefaultsettingsforthereader:

Thezoomfeatureisavailableandabuttontocontrolitisvisibleonthelive-streampreview(ifdisplayed).Thesimulatedhardwaretrigger(volumecontrolbuttons)isdisabled.WhenstartScanning()iscalled,thedecodingprocessisstarted.

Basedontheselectedmode,additionalilluminationoptionsandbehaviorsareset,alsolistedinthetable.

Page 12: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 12/37

VALUE DESCRIPT ION ILLUMINATIONLIVE-

STREAMPREVIEW

NO_AIMER

Initializesthereadertousealive-streampreviewonthemobiledevice

screensotheusercanpositionthe

barcodewithinthecamera’sfieldofviewfordetectionanddecoding.Usethismodeifthe

mobiledevicedoesnothaveanaiming

accessory.

Illuminationisavailableandabuttontocontrolitisvisibleonthelive-stream

preview.Displayed

Ifcommandsaresenttothe

readerforaimercontrol,theyare

ignored.

PASSIVE_AIMER

Initializesthereadertouseapassiveaimer.Nolive-

streampreviewisavailableonthe

devicescreeninthismode,sinceanaimingpatternis

projected.

Illuminationisnotavailable,andthelive-streampreviewdoesnothaveanilluminationbutton.

NotDisplayed

Ifcommandsaresenttothereaderforillumination

control,theyareignoredbecauseitisassumedinthismodethatthebuilt-inLEDofthemobiledeviceisbeingusedforthe

aimer.

Initializesthereadertousethefrontcameraofthe

mobiledevice,ifavailable.Usethisconfigurationwith

Thefrontcameraisused.

Illuminationisnotavailableandthe

live-stream

Page 13: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 13/37

FRONT_CAMERAcarebecausemostfrontfacingcamerasdonothaveauto

focusandillumination,and

providesignificantlylowerresolution

images.Illuminationisnotavailablein

thismode.

previewdoesnothaveanilluminationbutton.

Displayed

Ifcommandsaresenttothe

readerforaimerorillumination

control,theyareignored.

ThePreviewOptionparameterisoftype PreviewOptiondefinedinPreviewOpt ion.java,andisusedtochangethereader’sdefaultvaluesoroverridedefaultsderivedfromtheselectedCameraMode.Youcanspecifythefollowingoptions:

VALUE DESCRIPT ION

DEFAULTS AcceptalldefaultssetbytheCameraMode.

NO_ZOOM_BUTTONHidesthezoombuttononthelive-stream

preview,preventingtheuserfromadjustingthezoomofthemobiledevice

camera.

NO_ILLUMINATION_BUTTONHidestheilluminationbuttononthelive-streampreview,preventingtheuserfrom

togglingtheillumination.

HARDWARE_TRIGGER

Enablesasimulatedhardwaretrigger(thevolumedownbutton)forstartingscanningonthemobiledevice.Thisbuttononly

startsscanningwhenpressed,itdoesnotneedtobeheldlikeapurpose-builtscanner’strigger,andpressingita

secondtimedoesnotstopthescanningprocess.

PAUSED

Ifusingalive-streampreview,thepreviewisdisplayedwhenthe

startScanning()methodiscalled,butthereaderdoesnotstartdecodinguntiltheuserpressestheon-screenbuttonto

startthescanningprocess.

Page 14: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 14/37

ALWAYS_SHOWForcesalive-streampreviewtobedisplayedevenifanaimingmodeis

selected(forexampleCameraMode==PASSIVE_AIMER).

HIGH_RESOLUTION

Usesthedevicecamerainhigherresolution,changingthedefault

1280x720resolutionto1920x1080ondevicesthatsupportit,andtothedefaultresolutionondevicesthatdonotsupport

it.Thiscanhelpwithscanningsmallbarcodes,butincreasesthedecodingtimeasthereismoredatatoprocessin

eachframe.

HIGH_FRAME_RATEUsesthedevice'scamerain60FPS

insteadofthedefault30FPStoprovideasmoothercamerapreview.

SHOW_CLOSE_BUTTON Showclosebuttoninpartialview.

TheViewGroup(optional)parameterspecifiesthecontainerforthelive-streampreview.Iftheparameterisleftnull,afullscreenpreviewisused.

TheRegistrationKey(optional)parameterisusedtolicenseyourSDKwithlicensekeythatyouhave

TheCustomData(optional)parameterisusedforcustomtracking

Example

Createareaderwithnoaimer,nozoombutton,andusingasofttrigger:

readerDevice=ReaderDevice.getPhoneCameraDevice(this,CameraMode.NO_AIMER,PreviewOption.NO_ZOOM_BUTTON|PreviewOption.PAUSED);

Thisstartsapreviewwiththescannerpausedandasofttriggerbuttontotogglescanning.Afterpressingthesofttriggerbutton,theexpectedpreviewlookisthis:

Page 15: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 15/37

Theviewfinderintheimagehasanactivescanningsurfaceasaresultofhavingsetactivesymbologies.Formoredetails,seeEnablingSymbologies.

Request ingCameraPermissionforPhoneCameraScanner

FromAndroid6.0andaboveyouneedtorequestpermissionfromtheusertoaccessthebuilt-incameraofthemobiledevice.

Ifthecameracannotbeopenedduetopermissionissues,theonConnectionCompleted(readerDevice,error)callbackcontainsaCameraPermissionExceptionintheerrorparameter.YoucancheckforthisexceptiontypewiththeinstanceofoperatorandrequestpermissionwithintheActivity.

if(errorinstanceofCameraPermissionException)ActivityCompat.requestPermissions(((ScannerActivity)this),newString[]{Manifest.permission.CAMERA},REQUEST_PERMISSION_CODE);

Page 16: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 16/37

YouneedtoimplementtheActivityCompat.OnRequestPermissionResultCallbackinterfaceinyourActivitytocatchtheuserpermissionresult.TohandleuserresponseinonRequestPermissionResult(…),youcanusethefollowingcodetoretryconnectingtothephonecamera:

@OverridepublicvoidonRequestPermissionsResult(intrequestCode,@NonNullString[]permissions,@NonNullint[]grantResults){//Checkresultfrompermissionrequest.Ifitisallowedbytheuser,connecttoreaderDeviceif(requestCode==REQUEST_PERMISSION_CODE){if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){if(readerDevice!=null&&readerDevice.getConnectionState()!=ConnectionState.Connected)readerDevice.connect(ScannerActivity.this);}else{if(ActivityCompat.shouldShowRequestPermissionRationale(((ScannerActivity)this),Manifest.permission.CAMERA)){AlertDialog.Builderbuilder=newAlertDialog.Builder(this).setMessage("YouneedtoallowaccesstotheCamera").setPositiveButton("OK",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialogInterface,inti){ActivityCompat.requestPermissions(ScannerActivity.this,newString[]{Manifest.permission.CAMERA},REQUEST_PERMISSION_CODE);}}).setNegativeButton("Cancel",null);AlertDialogdialog=builder.create();dialog.show();}}}}

Connect ingtotheReaderDevice

Beforeconnecting,settheReaderDeviceListenerobjecttoreceiveevents:

readerDevice.setReaderDeviceListener(this);

Fordetails,seestep3inSettingupyouapplicationto-usetheCognexMobileBarcodeSDKforAndroid.

Page 17: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 17/37

Additionally,youcanenablesendingthelasttriggeredimageandSVGfromthereader:

readerDevice.enableImage(true);readerDevice.enableImageGraphics(true);

Invoketheconnectmethodafterinitializ ingtheReaderDeviceandsettingalistenermethodtohandleresponsesfromthereader.TheconnectmethodtakesOnConnectionCompletedListenerasparameter:

//MakesurethedeviceisturnedONandreadyreaderDevice.connect(ScannerActivity.this);

ThefollowinglistenermethodsarecalledwiththenewReaderDevicestatusinformation:

publicvoidonConnectionStateChanged(ReaderDevicereader);publicvoidonConnectionCompleted(ReaderDevicereader,Throwableerr)

TheonConnectionCompletedmethodpassedasaparameterofconnectisalsoinvokedastheconnectionprocesscompletes.Iftherewasaconnectionerror,thismethodprovidesaThrowableobject.

ScanningBarcodes

Afterconnectingtothescanningdevice,youmayneedtochangesomeofitssettings.CmbSDKprovidesasetofhigh-levelanddevice-independentAPIsforsettingandretrievingthecurrentconfigurationofthedevice.

YoucanstartscanningbarcodeswithaproperlyconfiguredreaderbycallingthestartScanningmethodfromyourReaderDeviceclass:

readerDevice.startScanning();

IfusinganMXmobileterminal,youcanpressatriggerbuttononthedevicetoturnthescanneronandreadabarcode.Ifusingthecamerareader,cmbSDKstartsthecamera,displaystheconfiguredlive-streampreview,andbeginsanalyzingtheframesfromthevideostream,lookingforaconfiguredbarcodesymbology.

Page 18: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 18/37

Youcanstopscanningwiththefollowing:

readerDevice.stopScanning();

Scanningstopsunderoneofthefollowingconditions:

Thereaderfoundanddecodedabarcode.Youreleasedthetriggerorpressedthestopbuttononthelive-streampreviewscreen.Thecamerareadertimedoutwithoutfindingabarcode.TheapplicationcallsthestopScanning()method.

Whenabarcodeisdecodedsuccessfully,youreceiveaReadResultsiterableresultcollectionobjectintheReaderDevicelistenermethod.TheonReadResultReceivedlistenermethodisinvokedeitherbecausethereaderdecodedabarcodeorthescanningprocesswascomplete.

Example

//Thisiscalledafterscanninghascompleted,eitherbydetectingabarcode,cancelingthescanbyusingtheon-screenbuttonorahardwaretriggerbutton,orifthescanningtimed-out@OverridepublicvoidonReadResultReceived(ReaderDevicereaderDevice,ReadResultsresults){clearResult();

if(results.getSubResults()!=null&&results.getSubResults().size()>0){for(ReadResultsubResult:results.getSubResults()){createResultItem(subResult);}}elseif(results.getCount()>0){createResultItem(results.getResultAt(0));}

isScanning=false;btnScan.setText("STARTSCANNING");resultListAdapter.notifyDataSetChanged();}

EnablingSymbologies

CmbSDKdoesnotenableanysymbologiesbydefaultforbarcodereadingwiththebuilt-incameraofthemobiledevice.Youmustenableallbarcodesymbologiesyourapplicationneedstoscantoachieveoptimalscanningperformance.Formoredetails,see

Page 19: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 19/37

OptimizingMobileDevicePerformance.

IndividualsymbologiescanbeenabledusingthefollowingmethodoftheReaderDeviceclass:

publicvoidsetSymbologyEnabled(finalSymbologysymbology,finalbooleanenable,finalOnSymbologyListenerlistener)readerDevice.setSymbologyEnabled(Symbology.DATAMATRIX,true,null);readerDevice.setSymbologyEnabled(Symbology.UPC_EAN,true,null);

AllsymbologiesusedforthesymbologyparameterinthismethodcanbefoundinReaderDevice.java.

Examples

/*EnableQRscanning*/readerDevice.setSymbologyEnabled(Symbology.QR,true,null);

Youcanalsousethesamemethodtodisablesymbologies:

/*DisableCode25scanning*/readerDevice.setSymbologyEnabled(Symbology.C25,false,null);

YoucanimplementthemethodforOnSymbologiesListenertochecktheresultofthesymbologychange:

@OverridepublicvoidonSymbologyEnabled(ReaderDevicereader,Symbologysymbology,Booleanenabled,Throwableerror){if(error!=null){/*Unsuccessfulprobablythesymbologyisunsupportedbythecurrentdevice,orthereisaproblemwiththeconnectionbetweenthereaderDeviceandMXdevice*/}else{//Success}}

Illuminat ionControl

Page 20: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 20/37

Ifyourreaderdeviceisequippedwithilluminationlights,youcancontrolthem:whenscanningstarts,youcanturnthemonoroff.UsethefollowingmethodofyourReaderDeviceobject:

readerDevice.setLightsOn(true,null);

YoucanimplementtheinterfacemethodforOnLightsListener,whichisthesecondparameterofthemethod.

publicclassScannerActivityextendsAppCompatActivityimplements....OnLightsListener....{....@OverridepublicvoidonLightsOnCompleted(ReaderDevicereader,Booleanon,Throwableerror){if(error!=null){//Unsuccessful}else{//Success}}}

Notalldevicesanddevicemodessupportilluminationcontrol.

CameraZoomSett ings

Ifthebuilt-incameraofamobiledeviceisusedasthereaderdevice,youcanconfigurezoomlevelsandhowtheyareused.Therearethreezoomlevels:

normal:notzoomed(100%)level1zoom(150%onAndroidbydefault)level2zoom(300%onAndroidbydefault)

TheSETCAMERA.ZOOM-PERCENT[100-MAX][100-MAX]commandisforconfiguringhowfarthetwolevelszoominpercentage.100isnotzoomedandMAX(goesupto1000)zoomsasfarasthedeviceiscapableof.Thefirstargumentisusedforsettinglevel1zoom,andthesecondforlevel2zoom.

YoucancheckthecurrentzoomsettingwiththeGETCAMERA.ZOOM-PERCENTcommand,whichreturnstwovalues:level1andlevel2zoom.

Example

readerDevice.getDataManSystem().sendCommand("SETCAMERA.ZOOM-PERCENT250500");

Page 21: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 21/37

Note:ThecameraneedstobestartedwithincmbSDKatleastoncetohaveavalidmaximumzoomlevel.Itmeansthatifyousetthezoomlevelto1000andthedevicecanonlygoupto600,theGETCAMERA.ZOOM-PERCENTcommandreturns1000aslongascameraisnotopened,butitreturns600afterwards.

GET/SETCAMERA.ZOOM0-2isanothercommandthatsetsthezoomlevelorreturnstheactualsetting.PossiblevaluesfortheSETcommandare:

0-normal(notzoomed)1-level1zoom2-level2zoom

Youcancallthiscommandbeforeorevenduringscanning,andthezoomgoesuptotheconfiguredlevel.Ifscanningisfinished,thevalueisresettonormalbehavior(0).

Example

readerDevice.getDataManSystem().sendCommand("SETCAMERA.ZOOM2");

CameraOverlayCustomizat ion

Whenusingthemobiledevice'scamera,cmbSDKallowsyoutoseethecamerapreviewinsideapreviewcontainerorinfullscreen.Thispreviewalsocontainsacustomizableoverlay.ThecmbSDKcameraoverlayfeaturesbuttonsforzooming,flashingandclosingthescanner,andaprogressbarindicatingthescantimeout.

TousethelegacycameraoverlayoriginallyusedincmbSDKv2.0.xandManateeWorksSDK,usethispropertyfromMWOverlaybeforeinitializ ingthereaderDevice:

MWOverlay.overlayMode=MWOverlay.OverlayMode.OM_LEGACY;

Thecustomizationofthelegacycameraoverlayislimited,soitisrecommendedtousethecmbSDKoverlay.

WhenusingthecmbSDKoverlay:

1. CopythelayoutfilesfromtheResources/layoutdirectoryintoyourprojectandmodifythem.Usecmb_scanner_part ial_view.xmlifscanningisstartedinsideacontainer(partialview),andusecmb_scanner_view.xmlifscanningisstartedinfullscreen.

Page 22: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 22/37

2. Modifythelayoutaccordingtoyourneeds.Forexample,youcanchangethesizes,positionsorcoloroftheviews,removeviewsandaddyourownviews,likeanoverlayimage.

CmbSDKaccessestheviewsituses(zoom,flash,closebuttons,theviewusedfordrawinglinesonthecorners,andtheprogressbar)withtheandroid:tagattribute.Donotchangetheandroid:tagattribute,otherwisecmbSDKcannotrecognizetheviewsandcontinuestofunctionasiftheyareremoved.

BoththecmbSDKandthelegacyoverlayallowyoutochangetheimagesusedonthezoomandflashbuttonsifyourimageshavethesamenameasthenamescmbSDKuses.YoucanfindtheimagesandnamesusedincmbSDKintheResources/drawable-mdpianddrawable-hdpidirectories.Whiletheotherresolutionsareoptional,thesetwodirectoriesmustcontainyourimageswiththecorrectnamessothatcmbSDKdisplaystheproperimages.

BoththecmbSDKandthelegacyoverlayallowyoutochangethecolorandwidthoftherectanglethatisdisplayedwhenabarcodeisdetected,orthecolorandwidthoftheviewfinderrectangle.MakesuretochangecolorsaftervalidconnectiontoreaderDevice.

Example:

MWOverlay.locationLineColor=Color.YELLOW;MWOverlay.locationLineWidth=6;

MWOverlay.viewportLineColor=Color.YELLOW;MWOverlay.viewportLineWidth=6;

AdvancedConfigurat ionusingDataManControlCommands

CognexscanningdevicesimplementDataManControlCommands(DMCC)forconfiguringandcontrollingthedevice.Everyfeatureofthedevicecanbecontrolledusingthistext-basedlanguage.TheAPIprovidesamethodforsendingDMCCcommandstothedevice.Commandsexistbothforsettingandqueryingconfigurationproperties.

TheAppendixincludesthecompleteDMCCreferenceforthecamerareader.

TheDMCCsforMXmobileterminalsandothersupporteddevicescanbefoundintheirrespectivemanualsavailablethroughSetupTool.

ThefollowingexamplesshowdifferentDMCCsenttothedeviceformoreadvancedconfiguration.

Page 23: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 23/37

Examples

//ChangethescandirectiontoomnidirectionalreaderDevice.getDataManSystem().sendCommand("SETDECODER.1D-SYMBOLORIENTATION0",ScannerActivity.this);//Changelive-streampreview'sscanningtimeoutto10secondsreaderDevice.getDataManSystem().sendCommand("SETDECODER.MAX-SCAN-TIMEOUT10",ScannerActivity.this);

YoucanalsoinvokeDMCCquerycommandsandreceivetheirresponseintheOnResponseReceivedListener.onResponseReceived()method.

//GetthetypeofdeviceconnectedreaderDevice.getDataManSystem().sendCommand("GETDEVICE.NAME",newOnResponseReceivedListener(){@OverridepublicvoidonResponseReceived(DataManSystemdataManSystem,DmccResponsedmccResponse){if(dmccResponse.getError()!=null){//UnsuccessfulLog.e("DMCC_ERR",“GETDEVICE.NAMEfailed”,dmccResponse.getError());}else{//Success-Usethefollowingresultfields://intmResponseId=dmccResponse.getResponseId();//StringmPayLoad=dmccResponse.getPayLoad();//byte[]mBinaryData=dmccResponse.getBinaryData();}});}

Resett ingtheConfigurat ion

CmbSDKincludesamethodforresettingthedevicetoitsdefaultsettings(notthefactorydefaults).IncaseofanMXmobileterminal,thisisthesavedconfiguration.Incaseofabuilt-incamera,thesearethedefaultsidentifiedintheAppendix,wherenosymbologiesareenabled.Thismethodofresettingthedeviceisthefollowing:

readerDevice.resetConfig(null);

WhenusinganMXmobileterminal,therearethreestatesthatwecandistinguish:

FactorydefaultsSavedconfiguration:whenthereweredifferentconfigurationssetonthedeviceandCONFIG.SAVEDMCCwascalled.Sessionconfiguration:whenyoumakechangesonthesavedconfiguration,the

Page 24: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 24/37

changesarevaliduntiltheMXMobileTerminalisrebooted.Ifitisrebooted,ithasthesavedconfigurationstate.

YoucanmonitorthecompletionofthisasyncmethodusingtheOnResetConfigListenerinterface,whichisanoptionalparameter.

publicclassScannerActivityextendsActivityimplements....OnResetConfigListener....{....@OverridepublicvoidonResetConfigCompleted(ReaderDevicereader,Throwableerror){if(error!=null){//Unsuccessful}else{//Success}}

WorkingwithResults

Whenabarcodeissuccessfullyread,theonReadResultReceivedmethodcreatesandreturnsaReadResultobject.Incaseofhavingmultiplebarcodessuccessfullyreadonasingleimageorframe,multipleReadResultobjectsarereturnedintheReadResultobject.

TheReadResultclasshaspropertiesdescribingtheresultofabarcoderead:

isGoodRead()(boolean):te llswhetherthereadwassuccessfulornotget ReadSt ring()(String):thedecodedbarcodeasastringget Image()(Bitmap):theimage/framethatthedecoderprocessedget ImageGraphics()(String):theboundarypathofthebarcodeasSVGdataget Xml()(String):therawXMLthatthedecoderreturnedget Symbology(Symbology):thesymbologytypeofthebarcode.ThisenumisdefinedinReaderDevice.java.

Whenascanningendswithnosuccessfulread,aReadResultisreturnedwiththegoodReadpropertysettofalse.

ToenabletheimageandimageGraphicspropertiesbeingfilledintheReadResultobject,setthecorrespondingenableImage()and/orenableImageGraphics()propertiesoftheReaderDeviceobject.

Toaccesstherawbytesfromthescannedbarcode,youcanusetheXMLproperty.ThebytesarestoredasaBase64Stringunderthe"full_string"tag.TheexampleshowshowyoucanuseanXMLparsertoextracttherawbytesfromtheXMLproperty.

Example

Page 25: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 25/37

try{XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();factory.setNamespaceAware(true);XmlPullParserxpp=factory.newPullParser();

Stringtag="";

//therawbyteswillbestoredinthisvariablebyte[]bytes;

xpp.setInput(newStringReader(result.getXml()));inteventType=xpp.getEventType();while(eventType!=XmlPullParser.END_DOCUMENT){if(eventType==XmlPullParser.START_TAG){tag=xpp.getName();}elseif(eventType==XmlPullParser.TEXT&&tag.equals("full_string")){Stringbase64String=xpp.getText();//Getthebytesfromthebase64stringherebytes=Base64.decode(base64String,Base64.DEFAULT);break;}elseif(eventType==XmlPullParser.END_TAG&&tag.equals("full_string")){tag="";break;}eventType=xpp.next();}}catch(Exceptione){e.printStackTrace();}

ImageResults

TheimageandSVGresultsaredisabledbydefault,whichmeansthatwhenscanning,theReadResultsdonotcontainanydatainthecorrespondingproperties.

Toenableimageresults,invoketheenableImage()methodfromtheReaderDeviceobject:

readerDevice.enableImage(true);

ToenableSVGresults,invoketheenableImageGraphics()methodonReaderDeviceobject:

readerDevice.enableImageGraphics(true);

Page 26: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 26/37

HandlingDisconnects

Ifadevicedisconnectsduetolowbatteryconditionormanualcabledisconnection,itcanbedetectedbytheonConnectionStateChanged()methodoftheReaderDeviceListenerinterface.

Note:TheonAvailabilityChanged()methodofReaderDeviceListenerisalsocalledwhenthedevicebecomesphysicallyunavailable.Itmeansthat(re)connectionisnotpossible.AlwayscheckthegetAvailability()methodoftheReaderDeviceobjectbeforetryingtocalltheconnect()method.

Appendix-DMCCfortheCameraReader

Appendix-DMCCfortheCameraReader

ThefollowingtableliststhevariousDMCCcommandssupportedbythecmbSDKwhenusingthebuilt-incameraforbarcodescanning.

ManyofthesecommandsarealsosupportedbytheMXmobileterminals.CommandsthatareuniquetothecamerareaderareindicatedassuchwithanXinthelastcolumn.

GET/SET COMMAND PARAMETER(S) DESCRIPT ION DEFAULT VALUE

GET/SET BATTERY.CHARGE Returnsthe

currentbatterylevelofthedeviceasapercentage.

BEEP Playstheaudiblebeep(tone).

Setsthenumberofbeeps(0-3)andthebeep

Page 27: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 27/37

GET/SET BEEP.GOOD [0-3][0-2]

tone/pitch(0-2,forlow,medium,high).Forthebuilt-incamera,

onlyasinglebeepwithnopitchcontrolis

supported.Thus,01turnsthebeepoff,11turnsthe

beepon.

11(Turnbeepon)

GET/SET CAMERA.ZOOM 0-2

ThepossiblevaluesfortheSETcommandare:0-

normal(un-zoomed),1-

zoomatlevel1,2-zoomatlevel2.Thiszoomlevelis

usedduringscanning.Whenscanningendsit

resetto0.

GET/SET CAMERA.ZOOM-PERCENT

[100-MAX][100-MAX]

Sets/Returnslevel1zoom(default150%onAndroid,200%oniOS),

andlevel2zoom(default300%onAndroid,400%on

iOS).Note:Thecamera

needstobestartedatleastoncefromsdktohaveapropervalueformaxcapablezoom

(MAX)

GET/SET CODABAR.CODESIZE ONminmaxOFFminmax

AcceptsanylengthCodabar.Setsmin/maxlengthofacceptedCodabar.

Page 28: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 28/37

GET/SET C11.CHKCHAR ON|OFF TurnsCode11checkdigiton/off.

GET/SET C11.CHKCHAR-OPTION 12

Requiressinglechecksum.

Requiresdoublechecksum.

GET/SET C11.CODESIZE ONminmaxOFFminmax

AcceptsanylengthCode11.Setsmin/maxlengthof

acceptedCode11.

GET/SET C25.CODESIZE ONminmaxOFFminmax

AcceptsanylengthCode25.Setsmin/maxlengthof

acceptedCode25.

GET/SET C39.ASCII ON|OFFTurnsCode39extendedASCII

on/off.

GET/SET C39.CODESIZE ONminmaxOFFminmax

AcceptsanylengthCode39.Setsmin/maxlengthof

acceptedCode39.

GET/SET C39.CHKCHAR ON|OFF TurnsCode39checkdigiton/off

GET/SET C93.ASCII ON|OFFTurnsCode93extendedASCII

on/off

GET/SET C93.CODESIZE ONminmaxOFFminmax

AcceptsanylengthCode93.Setsmin/maxlengthof

acceptedCode93.

Setsorgetsthe

Page 29: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 29/37

GET/SET COM.DMCC-HEADER 01 headeroptionusedinExtended

mode.

GET/SET COM.DMCC-RESPONSE 01DMCCresponse

format.1:Extended.

0:Silent(default)

CONFIG.DEFAULT

ResetsmostofthecameraAPI

settingstodefault,exceptthosenotedasnotresetting(seeAppendixB).Toresetallsettings,

useDEVICE.DEFAULT.

CONFIG.SAVE

Savesthecurrentconfigurationtonon-volatile

memory(MX-1xxxonly).NotethatwhenanMXpowersofforenterssleepmode,thelast

savedconfigurationis

restoredwhenthedevicewakesup.

CONFIG.RESTORE

Restoresthesaved

configurationfromnon-volatile

memory(MX-1xxxonly).

GET/SET DATA.RESULT-TYPE01248

Specifiesresultstobereturned(sumformultiple

values):0-None

1-Textstringresult(default)2-XMLresults4-XMLstats

Page 30: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 30/37

8-Scanimage(seeIMAGE.*commands)

GET/SET DATABAR.EXPANDED ON|OFFTurnstheDataBar

Expandedsymbologyon/off.

GET/SET DATABAR.LIMITED ON|OFFTurnstheDataBar

Limitedsymbologyon/off.

GET/SET DATABAR.RSS14 ON|OFFTurnstheDataBarRSS14symbology

on/off.

GET/SET DATABAR.RSS14STACK ON|OFFTurnstheDataBarRSS14Stacked

symbologyon/off.

GET/SET DECODER.1D-SYMBOLORIENTATION

0123

Useomnidirectionalscanorientation.Usehorizontaland

verticalscanorientation.

Useverticalscanorientation.

Usehorizontalscanorientation.

GET/SET DECODER.EFFORT 1-5

Setstheeffortlevelforimage

analysis/decoding.Thedefaultis2.

Donotuse4-5foronlinescanning.

GET/SET DECODER.MAX-SCAN-TIMEOUT 1-120

Setsthetimeoutforthelive-streampreview.Whenthe

timeoutisreached,

decodingispaused;thelive-streampreviewwillremainon-

screen.

Page 31: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 31/37

GET DECODER.MAX-THREADS

ReturnsthemaxnumberofCPU

threadssupportedbythedevice.

GET/SET DECODER.THREADS-USED [0-MAX]

SpecifythemaxnumberofCPUthreadsthatthescannercanuse

duringthescanningprocess.

DEVICE.DEFAULT

Resetsthedevice(includingthecameraAPI)

settingstodefault(seeAppendixB).

GET DEVICE.FIRMWARE-VER Getsthedevicefirmwareversion.

GET DEVICE.ID

ReturnsdeviceIDassignedbyCognextothe

scanningdevice.Forabuilt-incamera,SDKreturns53.

GET/SET DEVICE.NAME

Returnsthenameassignedtothe

device.Bydefault,thisis“MX-“plusthelast6digitsofDEVICE.SERIAL-

NUMBER.

“MX-“+thelastsixdigits

DEVICE.SERIAL-

GET DEVICE.SERIAL-NUMBER

Returnstheserialnumberofthe

device.Forabuilt-incamera,theSDKassignsapseudo-random

number.

ReturnsthedevicenameassignedbyCognextothe

Page 32: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 32/37

GET DEVICE.TYPE scanningdevice.Forabuilt-incamera,SDKreturns“MX-Mobile”.

GET/SET FOCUS.FOCUSTIME 0-10

Setsthecamera’sauto-focusperiod(howoftenthecamerashouldattempttorefocus).

GET/SET I2O5.CHKCHAR ON|OFFTurnsInterleaved2of5checkdigit

on/off.

GET/SET I205.CODESIZE ONminmaxOFFminmax

AcceptsanylengthInterleaved

2of5.Setsmin/maxlengthofaccepted

Interleaved2of5.

GET/SET IMAGE.FORMAT012

Scannerreturnsimageresultinbitmapformat.ScannerreturnsimageresultinJPEGformat.

ScannerreturnsimageresultinPNGformat.

GET/SET IMAGE.QUALITY 10,15,20,...90 SpecifiesJPEGimagequality.

GET/SET IMAGE.SIZE0123

Scannerreturnsfullsizeimage.Scannerreturns1/4sizeimage.Scannerreturns1/16sizeimage.Scannerreturns1/62sizeimage.

Page 33: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 33/37

GET/SET LIGHT.AIMER 0-1Disables/enablestheaimer(whenthescannerstarts).

DefaultbasedoncameraMode:0:

1:PassiveAimerand

GET/SET LIGHT.AIMER-TIMEOUT 0-600 AimerTimeoutinseconds.

GET/SET LIGHT.INTERNAL-ENABLE ON|OFF

Enables/disablesillumination(when

thescannerstarts).

GET/SET MSI.CHKCHAR ON|OFF TurnsMSIPlesseycheckdigiton/off.

GET/SET MSI.CHKCHAR-OPTION

012345

Usemod10checksum

Usemod10mod10checksumUsemod11

checksum(IBMalgorithm)

Usemod11mod10checksum(IBM

algorithm)Usemod11

checksum(NCRalgorithm)

Usemod11mod10checksum(NCR

algorithm)

GET/SET MSI.CODESIZE ONminmaxOFFminmax

AcceptsanylengthMSIPlessey.

Setsmin/maxlengthof

acceptedMSIPlessey.

GET/SET SYMBOL.AZTECCODE ON|OFFTurnstheAztecCodesymbology

on/off.

GET/SET SYMBOL.CODABAR ON|OFF TurnstheCodabar

Page 34: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 34/37

symbologyon/off.

GET/SET SYMBOL.C11 ON|OFF TurnstheCode11symbologyon/off.

GET/SET SYMBOL.C128 ON|OFFTurnstheCode128symbology

on/off.

GET/SET SYMBOL.C25 ON|OFFTurnstheCode25symbologyon/off

(standard).

GET/SET SYMBOL.C39 ON|OFF TurnstheCode39symbologyon/off.

GET/SET SYMBOL.C93 ON|OFF TurnstheCode93symbologyon/off.

GET/SET SYMBOL.COOP ON|OFFTurnstheCOOP

symbology(Code25variant)on/off.

GET/SET SYMBOL.DATAMATRIX ON|OFFTurnstheData

Matrixsymbologyon/off.

GET/SET SYMBOL.DATABAR ON|OFF

TurnstheDataBarExpandedand

Limitedsymbologies

on/off.

GET/SET SYMBOL.DOTCODE ON|OFF TurnstheDotCodesymbologyon/off.

GET/SET SYMBOL.IATA ON|OFFTurnstheIATA

symbology(Code25variant)on/off.

GET/SET SYMBOL.INVERTED ON|OFFTurnstheInvertedsymbology(Code25variant)on/off.

GET/SET SYMBOL.ITF14 ON|OFFTurnstheITF-14symbology(Code

Page 35: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 35/37

25variant)on/off.

GET/SET SYMBOL.UPC-EAN ON|OFF

TurnstheUPC-A,UPC-E,EAN-8,and

EAN-13symbologies

on/off.

GET/SET SYMBOL.MATRIX ON|OFFTurnstheMatrixsymbology(Code25variant)on/off.

GET/SET SYMBOL.MAXICODE ON|OFFTurnstheMaxiCode

symbologyon/off.

GET/SET SYMBOL.MSI ON|OFFTurnstheMSI

Plesseysymbologyon/off.

GET/SET SYMBOL.PDF417 ON|OFF TurnsthePDF417symbologyon/off.

GET/SET SYMBOL.PLANET ON|OFF TurnsthePLANETsymbologyon/off.

GET/SET SYMBOL.POSTNET ON|OFFTurnsthePOSTNETsymbologyon/off.

GET/SET SYMBOL.4STATE-IMB ON|OFFTurnsthe

IntelligentMailBarcode

symbologyon/off.

GET/SET SYMBOL.4STATE-RMC ON|OFFTurnstheRoyalMailCode

symbologyon/off.

GET/SET SYMBOL.QR ON|OFFTurnstheQRand

MicroQRsymbologies

on/off.

012

Single(notsupported)

Presentation(notsupported)

Manual(default)

Page 36: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 36/37

GET/SET TRIGGER.TYPE 345

Burst(notsupported)Self(not

supported)Continuous

GET/SET UPC-EAN.EAN13 ON|OFF TurnstheEAN-13symbologyon/off.

GET/SET UPC-EAN.EAN8 ON|OFF TurnstheEAN-8symbologyon/off.

GET/SET UPC-EAN.UPC-A ON|OFF TurnstheUPC-Asymbologyon/off.

GET/SET UPC-EAN.UPC-E ON|OFF TurnstheUPC-Esymbologyon/off.

GET/SET UPC-EAN.UPCE1 ON|OFF TurnstheUPC-E1symbologyon/off.

GET/SET UPC-EAN.SUPPLEMENT

01234

TurnsoffUPCsupplemental

codes(ignored)TurnsonUPCsupplemental

codes(required)Required2digitsupplemental.Required5digitsupplemental.Notrequired.

GET/SET VIBRATION.GOOD ON|OFFSets/getswhethertovibratewhenacodeisread(defaultisON)

Precaut ions

Precaut ions

Page 37: Cognex Mobile Barcode SDK for Android (v2.3.x)

t it le:CognexMobileBarcodeSDKforAndroid(v2.3.x);ver:2.6.x 37/37

ObservetheseprecautionswheninstallingtheCognexproduct,toreducetheriskofinjuryorequipmentdamage:

Toreducetheriskofdamageormalfunctionduetoover-voltage,linenoise,electrostaticdischarge(ESD),powersurges,orotherirregularitiesinthepowersupply,routeallcablesandwiresawayfromhigh-voltagepowersources.Changesormodificationsnotexpresslyapprovedbythepartyresponsibleforregulatorycompliancecouldvoidtheuser’sauthoritytooperatetheequipment.Cableshieldingcanbedegradedorcablescanbedamagedorwearoutmorequicklyifaservicelooporbendradiusistighterthan10Xthecablediameter.Thebendradiusmustbeginatleastsixinchesfromtheconnector.Thisdeviceshouldbeusedinaccordancewiththeinstructionsinthismanual.Allspecificationsareforreferencepurposeonlyandmaybechangedwithoutnotice.