Use EMDK in a Service?

L Lucas Smith 2 years 11 months ago
7 1 0

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 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 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;   }   }   }

Please register or login to post a reply

1 Replies

R Richard Venderbosch

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.

CONTACT
Can’t find what you’re looking for?