我使用zxing源代码作为库在我的应用中集成了qr代码扫描功能。我的活动扩展了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扫描仪只扫描一次。如果返回的qr代码错误,用户必须重新启动活动才能让扫描仪再次扫描。
如果结果代码错误但是它不起作用,我尝试了类似的东西。
Hanlder handler = new Handler();
handler.sendEmptyMessageDelayed(R.id.preview_id, CaptureActivity.BULK_MODE_SCAN_DELAY_MS
答案 0 :(得分:0)
我今天遇到了这个问题,但是在执行sendEmptyMessageDelayed时,通过调用getHandler()而不是创建新的处理程序来解决它。老问题,所以我想这根本不会对你有所帮助,但对于那些有同样问题的人来说......好吧,这就是解决方案:
@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);
}
答案 1 :(得分:0)
不
new Handler()
不
getHandler()
在CaptureActivity
中,应该有一个CaptureActivityHandler
。使用该处理程序发送消息。