0

我正在开发一个使用 Zxing 库来读取二维码的 Android 应用程序。现在我差不多完成了,只剩下一个问题。

我需要应用程序在某些事件后停止扫描 10 秒。我已经让线程休眠 10 秒,这不是我想要的方式。我想应用一切正常。但它不应该让用户知道它没有扫描任何东西。

你能解释一下如何做到这一点。我可以使用计时器方法。但是我应该在 Zxing 中的哪个方法停止 10 秒?

4

2 回答 2

0

检查文件InactivityTimer.java,有这一行:

private static final int INACTIVITY_DELAY_SECONDS = 5 * 60;

在那里您可以看到超时设置为 5 分钟。只需修改这个值。

于 2013-01-18T18:55:32.743 回答
0

我让它按预期工作。所有的解码都是通过handleDecodeCapture 活动类中的方法完成的。所以我在里面初始化了一个布尔变量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.
                    }
            }
}

我认为这是最简单的解决方案。

于 2013-02-24T13:59:56.147 回答