Google 扫码器(仅限 Android)

Google 扫码器(仅限 Android)

Google Code Scanner API 提供了全面的扫描解决方案,无需您的应用请求相机权限,同时保护用户隐私。这是通过将扫描代码委托给 Google Play 服务并仅将扫描结果返回给您的应用来完成的(视频 1)。 所有图片处理操作都在设备上进行,并且 Google 不会存储结果或图片数据。该 API 支持与机器学习套件条形码扫描 API 相同的代码格式,并返回相同的 Barcode 对象。

此 API 非常适合需要无缝代码扫描(无需自定义界面或相机体验)的应用。该实现完全属于 Google Play 服务,可以确保对应用大小的影响最小。

对于需要自定义界面的更复杂的使用场景,我们建议直接使用 ML Kit Barcode Scanning API

如果您有任何疑问、想要提交 bug 或需要帮助,请查看机器学习套件社区页面

此 API 使用未捆绑库,必须先下载才能使用。如需了解详情,请参阅此指南

须知事项

此 API 需要 Android API 级别 21 或更高级别。确保应用的 build 文件使用的 minSdkVersion 值不小于 21。

为了让您的应用做好准备,请完成以下部分中的步骤。

配置您的应用

  1. 在顶级 settings.gradle 文件的 dependencyResolutionManagement 代码块下,添加 Google 的 Maven 代码库Maven 中央代码库

    复制代码
    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
  2. play-services-code-scanner SDK 的 Google Play 服务依赖项添加到模块的 Gradle build 文件(通常为 app/build.gradle)中:

    复制代码
    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'
    }
  3. 您可以将应用配置为让 Google Play 服务在您的应用从 Play 商店安装时自动将其下载到设备上。

    复制代码
    <application ...>
      ...
      <meta-data
          android:name="com.google.mlkit.vision.DEPENDENCIES"
          android:value="barcode_ui"/>
      ...
    </application>

    您还可以通过 Google Play 服务 ModuleInstallClient API 明确检查扫描器模块可用性并请求下载。

    如果您不启用安装时模块下载或请求显式下载,并且扫描器模块尚未针对其他用例进行安装,Google Play 服务会在首次使用扫描器模块时下载该模块。

扫描二维码

扫描条形码以执行下列步骤。

  1. 可选:配置扫码器。

    如果您知道自己要读取哪些格式的条形码,可以将条形码检测器配置为仅检测这些格式,从而加快条形码检测器的速度。例如,如需仅检测 Aztec 码和 QR 码,请按照以下示例构建 GmsBarcodeScannerOptions 对象:

    KotlinJava

    复制代码
    GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(
           Barcode.FORMAT_QR_CODE,
           Barcode.FORMAT_AZTEC)
       .build();

    默认情况下,自动缩放功能处于关闭状态。如需启用 16.1.0 及更高版本的自动缩放功能,请调用 enableAutoZoom(),如以下代码示例所示。

    KotlinJava

    复制代码
    GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
       .setBarcodeFormats(...)
       .enableAutoZoom() // available on 16.1.0 and higher
       .build();
  2. 获取 GmsBarcodeScanner 的实例,如代码示例所示:

    KotlinJava

    复制代码
    GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this);
    // Or with a configured options
    // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);
  3. 通过调用 startScan() 请求代码扫描。

    KotlinJava

    复制代码
    scanner
       .startScan()
       .addOnSuccessListener(
           barcode -> {
             // Task completed successfully
           })
       .addOnCanceledListener(
           () -> {
             // Task canceled
           })
       .addOnFailureListener(
           e -> {
             // Task failed with an exception
           });
  4. 处理生成的 Barcode

    KotlinJava

    复制代码
    String rawValue = barcode.getRawValue();
相关推荐
码农阿豪4 小时前
Nacos 日志与 Raft 数据清理指南:如何安全释放磁盘空间
java·安全·nacos
王码码20354 小时前
Flutter for OpenHarmony: Flutter 三方库 cryptography 在鸿蒙上实现金融级现代加解密(高性能安全库)
android·安全·flutter·华为·金融·harmonyos
直有两条腿4 小时前
【大模型】Langchain4j
java·langchain
love530love4 小时前
Scoop 完整迁移指南:从 C 盘到 D 盘的无缝切换
java·服务器·前端·人工智能·windows·scoop
消失的旧时光-19434 小时前
C++ 多线程与并发系统取向(二)—— 资源保护:std::mutex 与 RAII(类比 Java synchronized)
java·开发语言·c++·并发
莫寒清4 小时前
ThreadLocal
java·面试
亚历克斯神5 小时前
Flutter for OpenHarmony:Flutter 三方库 yaml_edit 精准修改 YAML 文件内容(保留注释与格式的编辑神器)
android·flutter·华为·harmonyos
左手厨刀右手茼蒿5 小时前
Flutter for OpenHarmony: Flutter 三方库 image_size_getter 零加载极速获取图片尺寸(鸿蒙 UI 布局优化必备)
android·服务器·flutter·ui·华为·harmonyos
亚历克斯神5 小时前
Flutter for OpenHarmony:zxing2 纯 Dart 条码扫描与生成库(不仅是扫码,更是编解码引擎) 深度解析与鸿蒙适配指南
android·flutter·华为·harmonyos
钛态5 小时前
Flutter for OpenHarmony:dio_cookie_manager 让 Dio 发挥会话管理能力,像浏览器一样自动处理 Cookie 深度解析与鸿蒙适配指南
android·linux·运维·flutter·ui·华为·harmonyos