如何停止扫描和存储来自谷歌视觉API的数据?



我在我的项目上使用谷歌的视觉API BarcodeScanner。我想中断扫描一旦代码已被扫描,并存储在另一个活动的内容。我怎么能做到呢?有这么多的类和"相互联系":x

谢谢!

如果您像示例代码中那样使用CameraSourcePreview,您可以调用它的"release()"方法来关闭相机和相关的条形码检测器。如果你直接使用CameraSource而不使用预览,那么你可以在该实例上直接调用release()。

参见另一个讨论传递结果的问题:

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

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

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

编辑:关于这个例子,向下滚动到"4"。"用相机读二维码"在那里你会发现我在说什么。

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

在类

中创建变量字段
private boolean firstDetected = true;

ent o no msamutodo receiveDetections()

@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
SparseArray<Barcode> barcodes = detections.getDetectedItems();
if (barcodes.size() > 0 && firstDetected) {
    /* Some code */                   
    firstDetected = false;                    
  }
}

相关内容

  • 没有找到相关文章

最新更新