gpt4 book ai didi

android - 使用 google mobile vision api 检测第一个条形码并将数据发送到另一个 Activity

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:05 24 4
gpt4 key购买 nike

您好,我在 github 上检查了来自 google 的条形码阅读器示例,我试图让条形码检测器检测第一个条形码(只有一个),当它检测到时,它会将解码后的条形码发送到另一个 Activity 。 Mabye 我错了,但我需要输入这段代码

BarcodeGraphic graphic = mGraphicOverlay.getFirstGraphic();
Barcode barcode = null;
if (graphic != null) {
barcode = graphic.getBarcode();
if (barcode != null) {
Intent data = new Intent();
data.putExtra(BarcodeObject, barcode);
setResult(CommonStatusCodes.SUCCESS, data);
finish();
}
else {
Log.d(TAG, "barcode data is null");
}
}
else {
Log.d(TAG,"no barcode detected");
}
return barcode != null;
}

在这个的某个地方,这样条形码就可以自动捕获,而无需在条形码图形出现时点击。我还认为我不需要 MultiProcessor.Builder<>

BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(context).build();
BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay);
barcodeDetector.setProcessor(
new MultiProcessor.Builder<>(barcodeFactory).build());

最佳答案

我也在追求同样的结果。这是我如何完成它的。

BarcodeTracker 添加监听器:

class BarcodeTrackerFactory implements MultiProcessor.Factory<Barcode> {
private GraphicOverlay<BarcodeGraphic> mGraphicOverlay;

private OnNewBarcodeListener newBarcodeListener;

BarcodeTrackerFactory(GraphicOverlay<BarcodeGraphic> barcodeGraphicOverlay) {
mGraphicOverlay = barcodeGraphicOverlay;
}

@Override
public Tracker<Barcode> create(Barcode barcode) {
BarcodeGraphic graphic = new BarcodeGraphic(mGraphicOverlay);
newBarcodeListener.onNewItem(barcode);
return new BarcodeGraphicTracker(mGraphicOverlay, graphic);
}

public interface OnNewBarcodeListener {
void onNewItem(Barcode item);
}

public void setOnNewBarcodeListener(OnNewBarcodeListener newBarcodeListener) {
this.newBarcodeListener = newBarcodeListener;
}

}

只要在检测到新条形码时调用创建方法,就会触发此监听器。

接下来,在 BarcodeCaptureActivitycreateCameraSource 方法下附加一个新的监听器,并将条形码发送到您想要的任何位置。

private void createCameraSource(boolean autoFocus, boolean useFlash) {
Context context = getApplicationContext();

// A barcode detector is created to track barcodes. An associated multi-processor instance
// is set to receive the barcode detection results, track the barcodes, and maintain
// graphics for each barcode on screen. The factory is used by the multi-processor to
// create a separate tracker instance for each barcode.
BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(context).build();
BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay);

barcodeFactory.setOnNewBarcodeListener(new BarcodeTrackerFactory.OnNewBarcodeListener() {
@Override
public void onNewItem(Barcode item) {
Log.d("BarcodeFound", "Found new barcode! " + item.rawValue);
Intent intent = new Intent(this, DoSomethingWithBarcodeActivity.class);
intent.putExtra("barcode", item.rawValue);
startActivity(intent);
}
});
...

希望对您有所帮助!

关于android - 使用 google mobile vision api 检测第一个条形码并将数据发送到另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35835399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com