Attempt to change the display's "Touch Mode" by MX/EMDK TouchMgr crashes on TC75

In our application on TC75 we want to set the display's Touch Mode to "Stylus and Finger" or "Glove and Finger" depending on the requests by of our the customers.

Our application calls the EMDK API function this.emdkProfileManager.processProfile with this XML string as parameter:

 

String[] profileParamString=new String[1];

 

profileParamString[0]=

   "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
   +"<characteristic type=\"Profile\">"
   +"<parm name=\"ProfileName\" value=\""+profileName+"\"/>"
   +"<characteristic type=\"TouchMgr\">"
   +"<parm name=\"TouchAction\" value=\""+((mode==0)?("Stylus and Finger"):("Glove and Finger"))+"\"/>"
   +"</characteristic>"
   +"</characteristic>";

 

But on my TC75 this immediately generates some severe problems on Linux device level (mouse and touchscreen) and with the MxStatsCSPService service:

 

07-13 12:57:01.290 2117-2127/? D/com.symbol.emdk.emdkservice.ProfileHandler: createProfile - mxProfile = <?xml version="1.0" encoding="UTF-8"?><wap-provisioningdoc><characteristic type="TouchMgr" version=""><parm name="TouchAction" value="Stylus and Finger"/></characteristic></wap-provisioningdoc>

07-13 12:57:01.290 2270-2270/? I/MxStats: MxFrameworkHelper:  mContextFrameworkService=android.app.Application@41918968

07-13 12:57:01.290 2270-2270/? W/ContextImpl: Implicit intents with startService are not safe: Intent { act=com.symbol.osx.proxyframework.IMultiUserManager } android.content.ContextWrapper.bindService:517 com.symbol.mxmf.csp.stats.ConnectToService.bindProxyServices:59 com.symbol.mxmf.csp.stats.MxStatsCSPService.onCreate:128

07-13 12:57:01.300 2503-2514/? D/TouchMngrCSPService: ITouchModeService.class.getName() = com.android.settings.touch.ITouchModeService

07-13 12:57:01.300 2503-2514/? W/ContextImpl: Implicit intents with startService are not safe: Intent { act=com.android.settings.touch.ITouchModeService } android.content.ContextWrapper.bindService:517 com.symbol.mxmf.csp.touchmgr.TouchMngrCSPService.doBindService:464 com.symbol.mxmf.csp.touchmgr.TouchMngrCSPService.access$3:457

07-13 12:57:01.300 2503-2514/? D/TouchModeService: Set To Stylus and Finger using: persist.sys.touch_mode flag

07-13 12:57:01.300 2503-2514/? W/ContextImpl: Calling a method in the system process without a qualified user: android.app.ContextImpl.bindService:1616 android.content.ContextWrapper.bindService:517 com.symbol.mxmf.csp.touchmgr.TouchMngrCSPService.doBindService:464 com.symbol.mxmf.csp.touchmgr.TouchMngrCSPService.access$3:457 com.symbol.mxmf.csp.touchmgr.TouchMngrCSPService$2.processXML:284

07-13 12:57:01.300 810-1207/? W/ActivityManager: Unable to start service Intent { act=com.android.settings.touch.ITouchModeService } U=0: not found

07-13 12:57:01.340 810-919/? I/EventHub: Removing device '/dev/input/mouse0' due to inotify event

07-13 12:57:01.340 2117-2127/? D/com.symbol.emdk.emdkservice.ProfileHandler: createProfile - mxResponse = <wap-provisioningdoc><characteristic type="TouchMgr" version="4.2"><parm name="TouchAction" value="Stylus and Finger"/></characteristic></wap-provisioningdoc>

07-13 12:57:01.340 2117-2127/? D/com.symbol.emdk.emdkservice.ProfileHandler: createProfile - barcodePresent = false

07-13 12:57:01.340 2117-2127/? D/com.symbol.emdk.emdkservice.ProfileHandler: createProfile - barcodePresentInCriteria = true

07-13 12:57:01.340 2117-2127/? D/com.symbol.emdk.emdkservice.ProfileHandler: createProfile - mxPresent = true

07-13 12:57:01.340 2117-2127/? D/com.symbol.emdk.emdkservice.ProfileHandler: createProfile - mxPresentInCriteria = true

07-13 12:57:01.340 2117-2127/? D/com.symbol.emdk.emdkservice.ProfileHandler: createProfile - Leaving

07-13 12:57:01.340 2270-2270/? I/MxStatsCSPService: onServiceConnected

07-13 12:57:01.340 2270-2270/? I/MxStatsCSPService: onServiceConnected: unbindService

07-13 12:57:01.340 2270-2270/? I/MxStatsCSPService: onServiceConnected: stopSelf

07-13 12:57:01.350 2101-2101/? D/TLmEZebraExecSettings: EMDK profile manager result CHECK_XML

07-13 12:57:01.360 2270-2270/? I/MxStatsCSPService: onServiceConnected

07-13 12:57:01.370 810-919/? I/EventHub: Removing device atmel_mxt_ts T100 touchscreen due to epoll hang-up event.

07-13 12:57:01.370 810-919/? I/EventHub: Removed device: path=/dev/input/event1 name=atmel_mxt_ts T100 touchscreen id=15 fd=190 classes=0x15

07-13 12:57:01.370 2270-2270/? I/MxStatsCSPService: onServiceConnected: unbindService

07-13 12:57:01.370 2270-2270/? I/MxStatsCSPService: onServiceConnected: stopSelf

07-13 12:57:01.420 810-919/? I/InputReader: Device removed: id=15, name='atmel_mxt_ts T100 touchscreen', sources=0x00005103

07-13 12:57:01.420 810-919/? D/InputReader: Could not retrieve current multitouch slot index.  status=-1

07-13 12:57:01.420 810-919/? I/EventHub: Removing device '/dev/input/event1' due to inotify event

 

What is wrong with the XML string?

How can we fix this problem?

 

The very same application runs successfully on a TC55.

 

Some details about my TC75:

 

D/TLmEDeviceSystemInfo: Android version '4.4.3'

D/TLmEDeviceSystemInfo: Boot loader 'B08-23257-D3'

D/TLmEDeviceSystemInfo: Device 'TC75'

/TLmEDeviceSystemInfo: Fingerprint 'Zebra/TC75/TC75:4.4.3/01-23257-K-14-04-00-MV/eng.us0h00.20151015.190943:user/release-keys'

D/TLmEDeviceSystemInfo: Build Id '01-23257-K-14-04-00-MV'

D/TLmEDeviceSystemInfo: Manufacturer 'Zebra Technologies'

D/TLmEDeviceSystemInfo: Model 'TC75'

D/TLmEDeviceSystemInfo: Product 'TC75'

D/TLmEDeviceSystemInfo: Kernel version '3.4.0'

D/TLmEDeviceSystemInfo: Phone serial number '15160522502103'

D/TLmEDeviceSystemInfo: Phone ANDROID ID '4dbd6b81113caf89'

D/TLmEDeviceSystemInfo: Phone type '1'

D/TLmEDeviceSystemInfo: Phone device Id (IMEI) '354176060085537'