CancelableFind.java 1.8 KB

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