gpt4 book ai didi

java - 我如何找到上下文并从 Android firebase ML-Kit BarcodeScannerProcessor onSuccess 开始一个新的 Activity

转载 作者:行者123 更新时间:2023-11-29 04:14:09 31 4
gpt4 key购买 nike

我正在使用 google 提供的 quickstart-android 代码,但经过多次尝试后,我无法找到不返回 null 的上下文。 BarcodeScannerProcessor 本身不是 Activity,因此我尝试创建 LivePreviewActivity 的实例并将其用作 Intent 中的上下文,但它为空。

目标是一旦识别出有效的条形码,我想打开一个新 Activity ,允许用户验证值并按下按钮调用网络服务以通过 API 将条形码发布到数据库。我很难找到有效的上下文,应用程序在尝试执行 Intent 时崩溃了。

从第 97-107 行开始:

https://github.com/jamiekeefer/quickstart-android/blob/master/mlkit/app/src/main/java/com/google/firebase/samples/apps/mlkit/java/barcodescanning/BarcodeScanningProcessor.java

        for (int i = 0; i < barcodes.size(); ++i) {
FirebaseVisionBarcode barcode = barcodes.get(i);
BarcodeGraphic barcodeGraphic = new BarcodeGraphic(graphicOverlay, barcode);
graphicOverlay.add(barcodeGraphic);

System.out.println(barcode.getRawValue());

if (!barcode.getRawValue().equals("") ) {

System.out.println("Got the number:" + barcode.getRawValue() + " Context: " + mContext); //OLD SCHOOL DEBUG OUTPUT

//enter code to start activity

Intent intent = new Intent(mContext, SendScannedBarcode.class);
String message = scannedBarcode;
intent.putExtra(EXTRA_MESSAGE, message);
mContext.startActivity(intent);
}


}

您可以在存储库中备份以查看 LivePreviewActivity where I trying to get context. 的实例

我已经尝试了很多东西并阅读了有关 Context、Views 和 Activities 的内容,基本上已经完全弄糊涂了。我能找到的唯一 tuts 是使用 Kotlin,这无助于澄清事情。

我很感激在此上下文中识别或构建有效 Intent 方面的任何帮助。谢谢。

最佳答案

所以我假设在您的 LivePreviewActivity 中,您正在创建 BarcodeScanningProcessor 类的对象。您可以做的是更改 BarcodeScanningProcessor 类中的构造函数以接受上下文,然后传入 LivePreviewActivity 的上下文。

代码应该是这样的:

BarcodeScanningProcessor 中:

  public BarcodeScanningProcessor(Context context) {
// Note that if you know which format of barcode your app is dealing with, detection will be
// faster to specify the supported barcode formats one by one, e.g.
// new FirebaseVisionBarcodeDetectorOptions.Builder()
// .setBarcodeFormats(FirebaseVisionBarcode.FORMAT_QR_CODE)
// .build();
detector = FirebaseVision.getInstance().getVisionBarcodeDetector();
this.mContext = context;
}

然后在 LivePreviewActivity 中:

在您的 Activity 的特定情况下,您会:

  case BARCODE_DETECTION:
Log.i(TAG, "Using Barcode Detector Processor");
cameraSource.setMachineLearningFrameProcessor(new BarcodeScanningProcessor(getApplicationContext()));
break;

或者如果你只是想创建一个类的对象,你可以这样做:BarcodeScanningProcessor bsp = new BarcodeScanningProcessor(getApplicationContext());

现在应该为您的 BarcodeScanningProcessor 类提供您的 Activity 上下文。现在,在 BarcodeScanningProcessor 中,mContext 不应为 null,并且将具有您的 Activity 的上下文。我希望这能回答您的问题。

关于java - 我如何找到上下文并从 Android firebase ML-Kit BarcodeScannerProcessor onSuccess 开始一个新的 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53397880/

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