Use EMDK in a Service?

Hi guys, is it possible to use the EMDK from a Service?

If I call my Service and access a methode with this content:

public String selectEMDK() {     results = EMDKManager.getEMDKManager(context, this);     if (results.statusCode != EMDKResults.STATUS_CODE.SUCCESS) {     return "Es geht nicht";   }     return "ES geht"; }

 

I get as result the statusCode: FAILURE.

 

and my programm wont access the onOpened methode from the EMDK.

 

Do you have any suggestion how I can implement the EMDK stuff in a service?

 

 

My current code looks like this:

public class MyService extends Service implements EMDKManager.EMDKListener, SimulScanReader.StatusListerner, SimulScanReader.DataListerner {     private EMDKResults results;    private EMDKManager emdkManager = null;    private SimulScanManager simulscanManager = null;    private List<SimulScanReaderInfo> readerInfoList = null;    private SimulScanReader selectedSimulScanReader = null;     private final Random mGenerator = new Random();    Context context = this;      @Override    public IBinder onBind(Intent intent) {     throw new UnsupportedOperationException("Not yet implemented");   }     @Override    public void onRebind(Intent intent) {    super.onRebind(intent);   String hallo = "hal";   }     public String selectEMDK() {     results = EMDKManager.getEMDKManager(context, this);     if (results.statusCode != EMDKResults.STATUS_CODE.SUCCESS) {     return "Es geht nicht";   }     return "ES geht";   }      @Override    public void onOpened(EMDKManager emdkManager) {    this.emdkManager = emdkManager;     simulscanManager = (SimulScanManager) emdkManager.getInstance(EMDKManager.FEATURE_TYPE.SIMULSCAN);    if (null == simulscanManager) {    return;   }     readerInfoList = simulscanManager.getSupportedDevicesInfo();   List<String> nameList = new ArrayList<>();    for (SimulScanReaderInfo readerInfo : readerInfoList) {   nameList.add(readerInfo.getFriendlyName());   }    }     @Override    public void onClosed() {    }     @Override    public void onData(SimulScanData simulScanData) {    }     @Override    public void onStatus(SimulScanStatusData simulScanStatusData) {    }      private void onStart() {    if (selectedSimulScanReader != null) {    try {    if (!selectedSimulScanReader.isEnabled()) {    selectedSimulScanReader.enable();   }   } catch (SimulScanException e) {   e.printStackTrace();   }   }   }     private void readCurrentScanner() throws Exception {   setCurrentConfig();    if (selectedSimulScanReader != null) {    selectedSimulScanReader.read();   }   }     private void setCurrentConfig() throws Exception {    if (selectedSimulScanReader != null) {   SimulScanConfig config = selectedSimulScanReader.getConfig();    if (config != null) {   File file = new File("/sdcard/simulscan/templates/ups.xml");    try {   SimulScanMultiTemplate myTemplate = new SimulScanMultiTemplate(simulscanManager, Uri.fromFile(file));     if (myTemplate != null) {   config.multiTemplate = myTemplate;   config.identificationTimeout = 15000;   config.processingTimeout = 10000;   config.userConfirmationOnScan = true;   config.autoCapture = true;   config.debugMode = false;   config.audioFeedback = true;   config.hapticFeedback = true;   config.ledFeedback = true;    selectedSimulScanReader.setConfig(config);   }   } catch (Exception e) {   e.printStackTrace();   }     }   }   }      private void initCurrentSCanner() throws SimulScanException {    selectedSimulScanReader.addStatusListener(this);    selectedSimulScanReader.addDataListener(this);    selectedSimulScanReader.enable();   }     private void deinitCurentScanner() throws SimulScanException {    if (selectedSimulScanReader != null) {    if (selectedSimulScanReader.isReadPending())    selectedSimulScanReader.cancelRead();    if (selectedSimulScanReader.isEnabled())    selectedSimulScanReader.disable();    selectedSimulScanReader.removeDataListener(this);    selectedSimulScanReader.removeStatusListener(this);    selectedSimulScanReader = null;   }   }   }

Richard Venderbosch
Hello.It does work in a

Hello.

It does work in a service.

Maybe the "context" variable is not set appropriate. You should try

     context=this.getBaseContext();

to set the "context" variable.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Log in to post comments