我正在開發一個使用Zxing庫來讀取QR碼的Android應用程序。現在我差不多完成了,只剩下一個問題了。停止在Android中掃描Zxing的條形碼
我需要應用程序在特定事件後停止掃描10秒。我已經把線頭睡了10秒,這不是我想要的方式。我想要應用程序,因爲一切都很正常。但它不應該讓用戶知道它沒有掃描任何內容。
你能解釋怎麼做。我可以使用計時器方法。但是Zxing中哪種方法應該停10秒?
我正在開發一個使用Zxing庫來讀取QR碼的Android應用程序。現在我差不多完成了,只剩下一個問題了。停止在Android中掃描Zxing的條形碼
我需要應用程序在特定事件後停止掃描10秒。我已經把線頭睡了10秒,這不是我想要的方式。我想要應用程序,因爲一切都很正常。但它不應該讓用戶知道它沒有掃描任何內容。
你能解釋怎麼做。我可以使用計時器方法。但是Zxing中哪種方法應該停10秒?
我讓它按我的預期工作。 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.
}
}
}
我認爲這是最簡單的解決方案。
檢查文件InactivityTimer.java,有這樣一行:
private static final int INACTIVITY_DELAY_SECONDS = 5 * 60;
在那裏,你可以看到,超時被設置爲5分鐘。只是模仿這個價值。
InactivityTimer.java類用於在應用程序正在執行INACTIVITY_DELAY_SECONDS時間時完成活動。這不是我想要的。 :( – Malaka
比我想的更好理解你的問題,你也可以使用'ScheduledExecutorService'類來執行一個可延遲的延遲,讓我們打印一個吐司,如果它不再需要,你可以取消它。 – rekire