Trình quét mã của Google (Thử nghiệm)

API trình quét mã của Google cung cấp một giải pháp hoàn chỉnh để quét mã mà không yêu cầu ứng dụng của bạn yêu cầu quyền truy cập vào máy ảnh, trong khi vẫn bảo vệ quyền riêng tư của người dùng. Bạn có thể thực hiện việc này bằng cách uỷ quyền tác vụ quét mã cho Dịch vụ Google Play và chỉ trả về kết quả quét cho ứng dụng của bạn. Mọi hoạt động xử lý hình ảnh đều diễn ra trên thiết bị và Google không lưu trữ kết quả hoặc dữ liệu hình ảnh. API hỗ trợ các định dạng mã tương tự như API quét mã vạch của Bộ công cụ máy học và trả về cùng một đối tượng Mã vạch.

API này lý tưởng cho những ứng dụng chỉ cần quét mã và không yêu cầu giao diện người dùng hoặc trải nghiệm máy ảnh tùy chỉnh. Hoạt động triển khai nằm hoàn toàn trong Dịch vụ Google Play, vì vậy, kích thước ứng dụng không bị ảnh hưởng đáng kể. Đối với các trường hợp sử dụng phức tạp hơn yêu cầu giao diện người dùng tùy chỉnh, hãy sử dụng API quét mã vạch của Bộ công cụ máy học trực tiếp.

Nếu bạn có thắc mắc, muốn gửi lỗi hoặc cần hỗ trợ, hãy xem trang cộng đồng của Bộ công cụ máy học.

Trước khi bắt đầu

Để chuẩn bị cho ứng dụng của bạn, hãy hoàn tất các bước trong những phần sau.

Định cấu hình ứng dụng

  1. Trong tệp settings.gradle cấp cao nhất, hãy đính kèm Kho lưu trữ Maven của GoogleKho lưu trữ trung tâm Maven trong khối dependencyResolutionManagement:

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. Thêm phần phụ thuộc dịch vụ Google Play cho SDK play-services-code-scanner vào tệp bản dựng Gradle của mô-đun, thường là app/build.gradle:

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3'
    }
    
  3. Bạn có thể định cấu hình ứng dụng để Dịch vụ Google Play tự động tải mô-đun máy quét xuống thiết bị trong khi ứng dụng được cài đặt từ Cửa hàng Play.

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

    Bạn cũng có thể kiểm tra rõ ràng tình trạng có sẵn của mô-đun máy quét và yêu cầu tải xuống thông qua ModuleInstallClient API trong các dịch vụ của Google Play.

    Nếu bạn không bật tính năng tải mô-đun thời gian cài đặt xuống hoặc yêu cầu tải xuống rõ ràng, Dịch vụ Google Play sẽ tải mô-đun trình quét xuống vào lần đầu tiên sử dụng, nếu chưa được cài đặt cho trường hợp sử dụng khác.

Quét mã

1. (Không bắt buộc) Định cấu hình trình quét mã

Nếu biết mình muốn đọc định dạng mã vạch nào, bạn có thể cải thiện tốc độ của trình phát hiện mã vạch bằng cách chỉ định cấu hình trình phát hiện đó để phát hiện các định dạng đó. Ví dụ: để chỉ phát hiện mã Aztec và mã QR, hãy tạo một đối tượng GmsBarcodeScannerOptions như trong ví dụ sau:

Kotlin

val options = GmsBarcodeScannerOptions.Builder()
    .setBarcodeFormats(
        Barcode.FORMAT_QR_CODE,
        Barcode.FORMAT_AZTEC)
    .build()

Java

GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
    .setBarcodeFormats(
        Barcode.FORMAT_QR_CODE,
        Barcode.FORMAT_AZTEC)
    .build();

2. Nhận thực thể của GmsBarcodeScanner

Kotlin

val scanner = GmsBarcodeScanning.getClient(this)
// Or with a configured options
// val scanner = GmsBarcodeScanning.getClient(this, options)

Java

GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this);
// Or with a configured options
// GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);

3. Yêu cầu quét mã bằng cách gọi startScan()

Kotlin

scanner.startScan()
    .addOnSuccessListener { barcode ->
        // Task completed successfully
    }
    .addOnCanceledListener {
        // Task canceled
    }
    .addOnFailureListener { e ->
        // Task failed with an exception
    }

Java

scanner
    .startScan()
    .addOnSuccessListener(
        barcode -> {
          // Task completed successfully
        })
    .addOnCanceledListener(
        () -> {
          // Task canceled
        })
    .addOnFailureListener(
        e -> {
          // Task failed with an exception
        });

4. Xử lý Mã vạch thu được

Kotlin

val rawValue: String? = barcode.rawValue

Java

String rawValue = barcode.getRawValue();