@Override public void terminate() throws CmdException { try { cancel.execute( sd, new FpCancelResult() { @Override public void onSuccess() { // espera a que se señalice el semáforo terminate. terminate.acquireUninterruptibly(); }; }); } catch (CmdException e) { logger.log(Level.SEVERE, e.getMessage(), e); throw e; } }
@Override public void run() { exit = false; while (!exit) { try { identify.execute( sd, new IdentifyResult() { @Override public void onSuccess(int fpNumber) { logger.info("Huella identificada : " + String.valueOf(fpNumber)); try { player.play(soundOk); } catch (Exception e1) { e1.printStackTrace(); } } @Override public void releaseFinger() { logger.info("Debe retirar el dedo del lector"); } @Override public void onNotFound() { logger.info("Huella no encontrada"); try { player.play(soundError); } catch (Exception e1) { e1.printStackTrace(); } } @Override public void onFailure(int errorCode) { logger.info("Error identificando la huella : " + errorCode); try { player.play(soundError); } catch (Exception e1) { e1.printStackTrace(); } } @Override public void onCancel() { logger.info("Cancelando la identificación"); exit = true; try { player.play(soundOk); } catch (Exception e1) { e1.printStackTrace(); } } }); } catch (CmdException e) { logger.log(Level.SEVERE, e.getMessage(), e); } } // señala la finalización para que terminate() pueda retornar; terminate.release(); }