使用谷歌移动视觉 API 检测第一个条形码并将数据发送到另一个活动

2024-03-08

您好,我在 github 上检查了来自 google 的条形码阅读器示例,我试图让条形码检测器检测第一个条形码(只有一个),当它检测到时,它将解码的条形码发送到另一个活动。 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;
}

}

每当检测到新条形码时调用 create 方法时,都会触发此侦听器。

接下来,从BarcodeCaptureActivity, 在下面createCameraSource方法附加一个新的侦听器并将条形码发送到您想要的任何地方。

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);
        }
    });
...

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用谷歌移动视觉 API 检测第一个条形码并将数据发送到另一个活动 的相关文章

随机推荐

  • 如何在 moment.js 中设置解析区域?

    不幸的是 我没有在文档中找到答案 所以 例如 我输入日期 09 01 2017 我不知道 它是 DD MM YYYY 或 MM DD YYYY 但我知道用户区域设置 我可以得到像下面这样的东西吗 let date 09 01 2017 lo
  • 输入按键时获取 UITextField 的值?

    假设我有以下代码 IBOutlet UITextField nameTextField IBOutlet UILabel greetingLabel 我想要greetingLabel用户按下任意键后立即读取 Hello nameTextFi
  • Next.js:匹配根“/”和动态路由“/param”的页面

    我有一个使用 Next js 的单页面网站 我在路线上有主页 显示产品列表 该页面的代码位于pages index js 每个产品都有一个id所以我可以使用跳转到它 product id 为了使其更加 url 友好 我使用以下命令复制此行为
  • 默认情况下,按字母顺序对 Woocommerce 产品目录进行排序

    在带有 Avada 主题的 Woocommerce 中 我尝试使用以下代码按 DESC 顺序按字母顺序对产品进行排序 add filter woocommerce get catalog ordering args custom wooco
  • 在 ionic 框架中显示连接错误消息

    我正在开发一个离子移动应用程序 但很难显示连接错误消息 当设备未连接到互联网或连接超时或其他情况时 我想显示一个弹出窗口来显示错误消息 这是我第一次遇到这样的事情 首先将插件添加到您的项目中 然后在你的 app js 中包含以下代码 js
  • 如何访问可重用组件内的 ngModel 元素

    我的可重用组件中有一个 ngModel 组件 该字段不是表单的一部分 我想访问它来进行一些更改 我尝试了下面的代码 但它在 OnInit 中未定义 你能告诉我如何访问它吗 下面的代码返回未定义 ViewChild nameAccessor
  • Android 证书已过期

    目前 我在签署我的应用程序时收到一条错误消息 指出证书已过期 不是调试证书 我知道这令人惊讶 因为 Android 证书应该可用很多年 我无法创建新证书 因为在 PlayStore 上更新我的 apk 时出现错误 apk 的证书必须与前一个
  • Excel SpillParent 和 SpillingToRange 难度

    我正在尝试使用 SpillParent and SpillingToRange在某些 UDF 中的 Excel 中的 Range 对象上 当该范围不在调用 UDF 的同一工作表上时 会出现意外行为 我知道如果我使用 溢出运算符 我不需要这样
  • `npm install` 在 node-gyp 重建上失败,并显示“gyp:未检测到 Xcode 或 CLT 版本!”

    每次我尝试npm install 我收到以下错误 我如何解决它 gyp No Xcode or CLT version detected I am on node v v8 8 0 npm v v6 11 3 我尝试在 VSCode 终端和
  • sbt - 对象 apache 不是包组织的成员

    我想使用 sbt 部署并提交 Spark 程序 但它抛出错误 Code package in goai spark import org apache spark SparkContext SparkConf object SparkMeA
  • Laravel 中添加路由名称前缀而不添加 URI 前缀

    我有两个命名空间 Front and Admin For Admin 名称空间 可以将所有路径添加为前缀admin conrtoller action 但对于 Front 我想要有前缀的路由名称而不带前缀 URI Route group a
  • Facebook API - 权限错误

    有人知道 Facebook API 错误的原因是什么吗 当用户通过 feed 调用发帖时 有时会出现这种情况 error message Permissions error type FacebookApiException code 20
  • 如何限制激励视频广告长度 (admob)?

    我的应用程序使用激励视频广告 但在我看来 有时广告太长 如何设置广告时长限制 这不是 AdMob 提供的功能 不过 感觉太长的广告通常会收到较少的点击次数 因此随着系统的调整 显示的频率会越来越低
  • Nhibernate 对 select 进行更新?

    我有以下课程 public class Product public virtual Guid Id get set public virtual string Name get set public virtual Decimal Pri
  • java.lang.IllegalStateException:保存状态失败:活动已清除片段中的索引

    首先 我的应用程序的结构如下 SpashActivity gt MainActivity gt switching between many fragments 我的应用程序使用幻灯片菜单 https github com jfeinste
  • 将 Numpy 数组“转换”为 Matlab,反之亦然

    我正在寻找一种将 NumPy 数组传递给 Matlab 的方法 我已经成功地通过使用将数组存储到图像中来做到这一点scipy misc imsave然后使用加载它imread 但这当然会导致矩阵包含 0 到 256 之间的值 而不是 真实
  • 向用户报告进度时如何编写最简洁的代码?

    在过去的几个月里 我一直在努力想出一些干净的代码来向用户报告进度 一切似乎总是归结为 ReportProgress Starting Task 1 doTask1 ReportProgress Task 1 is done ReportPr
  • WPF DataGrid 控件模板

    我正在尝试自定义 WPF 4 0 DataGrid 并需要其控件模板的列表 也是嵌套 DataGridColumnHeadersPresenter PART ColumnHeadersPresenter 的控件模板 我发现this http
  • php pdo 绑定参数不起作用[重复]

    这个问题在这里已经有答案了 我正在使用以下 php pdo 代码将数据插入 mysql 数据库 插入成功 但是 更新的数据库将字符串文字 a b 显示为各自字段中的值 怎么了 data array array a gt John b gt
  • 使用谷歌移动视觉 API 检测第一个条形码并将数据发送到另一个活动

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