0

我使用 zxing 源代码作为在我的应用程序中集成了二维码扫描功能。我的活动扩展了 Capture Activity 并覆盖了 Capture Activity 类的 handleDecode 方法。我在覆盖方法 handleDecode 中的代码如下所示:

@Override
public void handleDecode(Result rawResult, Bitmap barcode){
String result = rawResult.getText();
if(result==WRONG_CODE){
      //do nothing
}else if(result==RIGHT_CODE){
      //do something
   }
}

这个想法很简单。如果用户扫描正确的代码然后做一些事情,否则继续扫描直到获得正确的代码。但是,问题是 zxing 扫描仪只扫描一次。如果返回的二维码错误,用户必须重新启动活动才能让扫描仪再次扫描。

如果结果代码错误,我尝试了类似的方法,但它不起作用。

Hanlder handler = new Handler();
handler.sendEmptyMessageDelayed(R.id.preview_id, CaptureActivity.BULK_MODE_SCAN_DELAY_MS
4

2 回答 2

0

我今天自己也遇到了这个问题,但是通过调用 getHandler() 而不是在执行 sendEmptyMessageDelayed 时创建新的处理程序来解决它。老问题,所以我想这根本不会帮助你,但对于其他有同样问题的人..好吧,这是解决方案:

   @Override 
   public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) {    
        Toast.makeText(this.getApplicationContext(), "Scanned code " + rawResult.getText(), Toast.LENGTH_LONG).show();      
        getHandler().sendEmptyMessageDelayed(R.id.restart_preview, 1000L);
    }
于 2014-02-04T19:51:49.460 回答
0

不是

new Handler()

不是

getHandler()

在您的CaptureActivity中,应该有一个CaptureActivityHandler. 使用该处理程序发送消息。

于 2014-08-21T03:14:47.500 回答