我发现不使用第一个匹配项,而是采用简单的防抖策略效果非常好。例如,在连续出现3帧条形码后才考虑有效匹配。
可以在自定义Detector<Barcode>
中轻松实现,内部使用com.google.android.gms.vision.barcode.BarcodeDetector
。
这会稍微降低检测速度,但会使其更可靠。
对于想要基于谷歌条形码示例的快速解决方案的任何人。在BarcodeGraphicTracker中添加三个字段:
String currentBarcode = null;
int confirmCounter = 0;
final static int CONFIRM_VALUE = 10;
@UiThread
void onBarcodeConfirmed(Barcode barcode);
if (currentBarcode != null && currentBarcode.equals(item.displayValue)){
confirmCounter++;
if (confirmCounter >= CONFIRM_VALUE){
confirmCounter = 0;
mBarcodeUpdateListener.onBarcodeConfirmed(item);
}
}else{
currentBarcode = item.displayValue;
confirmCounter = 0;
}
}
.setRequestFps()
是一种方法。