我在我的项目上使用谷歌的视觉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;
entreceiveDetections()
@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
SparseArray<Barcode> barcodes = detections.getDetectedItems();
if (barcodes.size() > 0 && firstDetected) {
/* Some code */
firstDetected = false;
}
}