谷歌ML工具包条形码扫描示例应用在安卓上无法检测到条形码

7
我正在尝试使用Google ML Kit条形码检测功能。为此,我已经安装了由Google提供的这个示例应用程序。我还将我的应用程序连接到我的Firebase项目之一。当我打开应用程序并在Barode detection中进入LivePreviewActivity时,摄像头启动但没有检测到条形码!根据快速开始指南,我还添加了


<meta-data
    android:name="com.google.firebase.ml.vision.DEPENDENCIES"
    android:value="barcode" />

在我的清单文件中。此外,我已经包含了这个。
FirebaseVisionBarcodeDetectorOptions options =
            new FirebaseVisionBarcodeDetectorOptions.Builder()
                    .setBarcodeFormats(
                            FirebaseVisionBarcode.FORMAT_CODE_128)
                    .build(); 

在BarcodeScanningProcessor.java文件中。
我遇到的错误是:
条码检测失败 com.google.firebase.ml.common.FirebaseMLException: 等待条形码检测模型下载,请稍候。 E/BarcodeNativeHandle:加载模块出错 java.lang.ClassNotFoundException: 找不到类“com.google.android.gms.chimera.DynamiteModuleInitializer”。
我已经在华为Mate 8和三星Galaxy S7 Edge两部手机上安装了该应用程序,但该应用程序无法从这两个手机中检测到条形码。
我的目标是从实时相机预览中检测/扫描条形码。 谢谢。
2个回答

10
关于问题的第一部分“等待条形码检测模型下载,请稍候。”:
如果设备上没有足够的存储空间或者设备上没有数据连接,就会发生这种情况。清除Google Play服务的数据并重试可解决该问题:
设置->应用->Google Play服务->存储->管理空间->清除所有数据
关于清单文件中的meta-data标签:
这有助于生产用例,即当最终用户从Play商店安装应用程序时,模型将在安装时使用该meta-data标签进行下载。但是,在开发过程中,您仍然必须等待模型下载一次。
关于Dynamite模块加载错误的最后一个问题(由于我声望不够,无法添加评论,因此在此添加):
您正在运行哪个Android版本和哪个Google Play服务版本?

1
您可以运行以下命令查询Google Play服务版本。请告诉我们结果:adb shell dumpsys activity service com.google.android.gms/.common.stats.GmsCoreStatsService | grep 'com.google.android.gms [' - Isabella Chen
请注意,在上述命令中,还有一个 \ 在 [ 之前,不知何故 StackOverflow 将其丢弃了。 - Isabella Chen
1
谢谢,它可以清除所有数据(仅清除缓存不足够)。 - Nicola Gallazzi
有没有办法检查模型是否已经下载? - Archie G. Quiñones

3

添加这个依赖项。它对我有用。

implementation 'com.google.firebase:firebase-ml-vision-barcode-model:16.0.2'

当使用版本24.0.0及更高版本时,文档中也提到了这一点:https://firebase.google.com/docs/ml-kit/android/read-barcodes - hardysim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接