3

我在我的项目中使用 Google 的 Vision API BarcodeScanner。我想在扫描代码后中断扫描并将内容存储在另一个活动中。我怎样才能做到这一点 ?有很多类和“互连”:x

谢谢 !

4

3 回答 3

2

如果您在示例代码中使用 CameraSourcePreview,则可以调用其“release()”方法来关闭相机和相关的条形码检测器。如果您在没有预览的情况下直接使用 CameraSource,那么您可以直接在该实例上调用“release()”。

请参阅讨论将结果传回的另一个问题:

如何使用 Google Play 服务中的新 Barcode API 捕获条形码值?

于 2015-09-15T13:54:24.330 回答
2

因此,就停止扫描而言,我通过调用.release()我的BarcodeDetector实例使其工作。我按照这个例子,你可以看到他们Detector.Processor<Barcode>为 BarcodeDetector 设置了一个。处理器有一个receiveDetections()方法,所以我所做的只是调用barcodeDetector.release()barcodeDetector 作为检测到条形码的实例。它对我来说很好,我还测试了扫描并在检测后启动另一个活动,并且只添加了一个活动,所以它实际上只是检测到一个条形码然后停止。

要将内容保存在另一个活动中,您可以receiveDetections()使用 以相同的方法启动另一个活动Intent,然后使用该putExtra()方法获取另一个活动所需的数据,尽管我真的不知道您要保存什么,因此putExtra() 可能不足以满足您的需求。

编辑:关于示例向下滚动到“4. 使用相机读取 QR 码”,你会发现我在说什么。

于 2016-09-16T12:31:58.053 回答
0

您可以在方法中使用boolean 标志receiveDetections()。该标志初始化为true,在第一次检测到代码块后执行并将标志设置为false,这样在新的检测后该块将不会被执行。这是一个例子。

在类中创建变量字段

private boolean firstDetected = true;

没有方法receiveDetections()

@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
SparseArray<Barcode> barcodes = detections.getDetectedItems();

if (barcodes.size() > 0 && firstDetected) {
    /* Some code */                   
    firstDetected = false;                    
  }
}
于 2020-04-20T03:45:45.357 回答