1 Reply Latest reply on Aug 7, 2015 12:40 PM by Hector Meza

    Unfortunately, DataWedge has stopped

    Stephen Kidson

      Our QAE has encountered this dialog popping up during regular use of our application on our Symbol TC55 running Android 4.4.3. We are building against EMDK v3.1:



      I believe this is likely a result of the following error caught in LogCat:

      08-05 11:23:36.845 D/com.symbol.emdk.emdkservice.barcode.DataCaptureServiceConnection(15711): Connection to the DataWedge initiated.

      08-05 11:23:36.845 D/com.symbol.emdk.emdkservice.barcode.DataCaptureServiceConnection(15711): Connecting to DataWedge Service...

      08-05 11:23:36.845 D/com.symbol.emdk.emdkservice.barcode.DataCaptureServiceConnection(15711): Connected to DataWedge Service

      08-05 11:23:36.855 E/AndroidRuntime( 1276): ERROR: thread detach failed

      08-05 11:23:36.865 D/dd:     (15711): disableDw

      08-05 11:23:36.885 E/        ( 1276):  ISS Command  script -

      08-05 11:23:36.885 D/AndroidRuntime( 1276): Shutting down VM

      08-05 11:23:36.885 W/dalvikvm( 1276): threadid=1: thread exiting with uncaught exception (group=0x41b8fd58)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): FATAL EXCEPTION: main

      08-05 11:23:36.885 E/AndroidRuntime( 1276): Process: com.symbol.datawedge, PID: 1276

      08-05 11:23:36.885 E/AndroidRuntime( 1276): java.lang.NullPointerException

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at com.symbol.scanning.imager.ImagerScanner$4.run(ImagerScanner.java:1036)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at android.os.Handler.handleCallback(Handler.java:733)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at android.os.Handler.dispatchMessage(Handler.java:95)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at android.os.Looper.loop(Looper.java:136)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at android.app.ActivityThread.main(ActivityThread.java:5045)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at java.lang.reflect.Method.invokeNative(Native Method)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at java.lang.reflect.Method.invoke(Method.java:515)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)

      08-05 11:23:36.885 E/AndroidRuntime( 1276): at dalvik.system.NativeStart.main(Native Method)


      Some context on how our application is setup:

      1. From onResume() of our first Activity we initialize EMDKManager. We retain one reference to it that our app uses across all activities via a singleton (I'll refer to as TC55ScanManager) as it doesn't make sense to constantly throw these references away and cause GC churn.
      2. In TC55ScanManager.onOpened(EMDKManager), we get the BarcodeManager and then the Scanner from barcodeManager.getDevice(BarcodeManager.DeviceIdentifier.INTERNAL_IMAGER1). The first thing we do is set scanner.triggerType = Scanner.TriggerType.SOFT_ALWAYS - our app listens to keypresses and invokes scanner.read() / scanner.cancelRead() accordingly (consequently, if anyone could point us to documentation about how TriggerType can be configured via EMDKConfig.xml it would be greatly apprectiated).
      3. Then in TC55ScanManager.onOpened(EMDKManager), we process our profile from /assets/EMDKConfig.xml (attached). For our usecase we use dedicated devices and intend for only our app to used; for this reason we set this profile as the default profile via the com.motorolasolutions.emdk.datawedge.api.ACTION_SETDEFAULTPROFILE intent. Some key configuration choices:
        • We use Intent delivery via startService(): <parm name="intent_delivery" value="1"/>
        • Our intent is received by an IntentService and then passed on to be processed by the app
        • All other settings are just copy-pasted from the code sample from this tutorial: Using Broadcast Intent in DataCapture Profiles


      This crash dialog can be dismissed and the application seems to behave fine afterwards though obviously having this pop up while our associates are working is undesirable. Any assistance would be greatly appreciated.