我正在开发一个使用 Zxing 库来读取二维码的 Android 应用程序。现在我差不多完成了,只剩下一个问题。
我需要应用程序在某些事件后停止扫描 10 秒。我已经让线程休眠 10 秒,这不是我想要的方式。我想应用一切正常。但它不应该让用户知道它没有扫描任何东西。
你能解释一下如何做到这一点。我可以使用计时器方法。但是我应该在 Zxing 中的哪个方法停止 10 秒?
检查文件InactivityTimer.java,有这一行:
private static final int INACTIVITY_DELAY_SECONDS = 5 * 60;
在那里您可以看到超时设置为 5 分钟。只需修改这个值。
我让它按预期工作。所有的解码都是通过handleDecode
Capture 活动类中的方法完成的。所以我在里面初始化了一个布尔变量onCreate
,
boolean isTensecondsFinished = ture;
然后我检查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.
}
}
}
我认为这是最简单的解决方案。