2013-01-18 62 views
0

我正在開發一個使用Zxing庫來讀取QR碼的Android應用程序。現在我差不多完成了,只剩下一個問題了。停止在Android中掃描Zxing的條形碼

我需要應用程序在特定事件後停止掃描10秒。我已經把線頭睡了10秒,這不是我想要的方式。我想要應用程序,因爲一切都很正常。但它不應該讓用戶知道它沒有掃描任何內容。

你能解釋怎麼做。我可以使用計時器方法。但是Zxing中哪種方法應該停10秒?

回答

0

我讓它按我的預期工作。 Capture活動類中的所有解碼事件都通過handleDecode方法完成。所以我初始化一個布爾變量裏面onCreate

boolean isTensecondsFinished = ture; 

然後我檢查解碼QR碼的isTensecondsFinished變量。就這樣,

public void handleDecode(Result rawResult, Bitmap barcode) { 
    inactivityTimer.onActivity(); 
    lastResult = rawResult; 
    ResultHandler resultHandler = ResultHandlerFactory.makeResultHandler(
      this, rawResult); 

    boolean fromLiveScan = barcode != null; 
    if (fromLiveScan) { 
     // historyManager.addHistoryItem(rawResult, resultHandler); 
     // Then not from history, so beep/vibrate and we have an image to 
     // draw on 
     if (isTenSecondsFinished) { 
      isTenSecondsFinished = false; 
      Timer tenSecondsTimer = new Timer(); 
      tenSecondsTimer.schedule(new TimerTask() { 

       @Override 
       public void run() { 
        isTenSecondsFinished = true; 

       } 
      }, 10 * 1000); 
          //Do the decoding stuff here then. 
        } 
      } 
} 

我認爲這是最簡單的解決方案。

0

檢查文件InactivityTimer.java,有這樣一行:

private static final int INACTIVITY_DELAY_SECONDS = 5 * 60; 

在那裏,你可以看到,超時被設置爲5分鐘。只是模仿這個價值。

+0

InactivityTimer.java類用於在應用程序正在執行INACTIVITY_DELAY_SECONDS時間時完成活動。這不是我想要的。 :( – Malaka

+0

比我想的更好理解你的問題,你也可以使用'ScheduledExecutorService'類來執行一個可延遲的延遲,讓我們打印一個吐司,如果它不再需要,你可以取消它。 – rekire