CancelableFind.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package epson.scan.lib;
  2. import android.content.Context;
  3. import android.os.Handler;
  4. public class CancelableFind {
  5. private static final Object sLock = new Object();
  6. private final String TAG = "CFind";
  7. private volatile boolean isFinishSearchScanner = false;
  8. private volatile boolean mCanceled = false;
  9. private escanLib mEscanLib;
  10. public void setEscanLib(escanLib escanlib) {
  11. mEscanLib = escanlib;
  12. }
  13. public int findScanner(@NonNull Context context, @Nullable Handler handler) {
  14. int escanWrapperFindScanner;
  15. if (mCanceled) {
  16. return 40;
  17. }
  18. synchronized (sLock) {
  19. isFinishSearchScanner = false;
  20. mEscanLib.setSearchStt(true);
  21. mEscanLib.resetIPAdressCheck();
  22. escanWrapperFindScanner = mEscanLib.escanWrapperFindScanner(60);
  23. mEscanLib.setSearchStt(false);
  24. mEscanLib.setJobDone(true);
  25. isFinishSearchScanner = true;
  26. if (escanWrapperFindScanner == -1051) {
  27. throw new IllegalStateException("escanWrapperFindScanner() returns ESCAN_ERR_LIB_NOT_INITIALIZED");
  28. }
  29. }
  30. return escanWrapperFindScanner;
  31. }
  32. public void cancel() {
  33. if (!isFinishSearchScanner) {
  34. isFinishSearchScanner = true;
  35. mCanceled = true;
  36. escanLib escanlib = mEscanLib;
  37. if (escanlib != null) {
  38. escanlib.setSearchStt(false);
  39. mEscanLib.escanWrapperCancelFindScanner();
  40. }
  41. }
  42. }
  43. public boolean isCanceled() {
  44. return mCanceled;
  45. }
  46. }