我开始在android中体验java。 我在布局上有3个EditText。 我设置了条形码扫描窗口来扫描条形码。 获取第一个条形码后,我暂停扫描并将其放在第一个EditText视图上。 然后我恢复。
问题是在第一次扫描后,相机不会再次扫描。 我尝试了很多方法,暂停然后恢复它仍然无法正常工作。 有人可以帮忙吗?
代码看起来像这样。
private CompoundBarcodeView barcodeView;
private BarcodeCallback callback = new BarcodeCallback() {
@Override
public void barcodeResult(BarcodeResult result) {
String code = null;
if (result.getText() != null) {
code = result.getText();
if (code != null) {
barcodeView.pause();
job01 = (EditText) findViewById(R.id.jobTicket01);
if (job01.getText().toString().trim().equals("")) {
job01.setText(code);
code = null;
}else {
if (job02.getText().toString().trim().equals("")) {
job02.setText(code);
code = null;
} else{
}
}
}
}
barcodeView.resume();
}
@Override
public void possibleResultPoints(List<ResultPoint> resultPoints) {
}
};
提前感谢。 玩具
答案 0 :(得分:0)
我只是避免在几秒钟内从扫描中解析数据。
我为数据设置了两个值,为时间戳设置了两个值。
String barcodeData = "";
Long scanTime = 0L;
@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
final SparseArray<Barcode> barcodes = detections.getDetectedItems();
if (barcodes.size() != 0) {
txtBarcodeValue.post(new Runnable() {
@Override
public void run() {
if(barcodeData.equals("") && scanTime.equals(0L)){
barcodeData = barcodes.valueAt(0).displayValue;
scanTime = System.currentTimeMillis();
Log.d(TAG, "Barcode" + barcodeData);
}else if (!barcodeData.equals(barcodes.valueAt(0).displayValue)){
barcodeData = barcodes.valueAt(0).displayValue;
scanTime = System.currentTimeMillis();
Log.d(TAG, "New Barcode Scanned" + barcodeData);
}else if (barcodeData.equals(barcodes.valueAt(0).displayValue) && scanTime>(System.currentTimeMillis()-2500)) {
//Do Nothing
Log.d(TAG, "Barcode Ignored ---------------" + barcodeData);
}else{
barcodeData ="";
scanTime = 0L;
}
}
});
}
}