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ệ được 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. 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ã giống 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 trải nghiệm máy ảnh hoặc giao diện người dùng tuỳ chỉnh. Hoạt động triển khai hoàn toàn nằm trong Dịch vụ Google Play, vì vậy, kích thước ứng dụng của bạn 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 tuỳ chỉnh, hãy sử dụng trực tiếp API Quét mã vạch của Bộ công cụ máy học.

Nếu bạn có thắc mắc, muốn gửi lỗi hoặc cần hỗ trợ, hãy truy cập 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 thêm kho lưu trữ Maven của Googlekho lưu trữ trung tâm Maven vào 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 để các dịch vụ của 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 khả năng cung cấp 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 tại thời điểm cài đặt xuống hoặc yêu cầu tải xuống một cách 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 mô-đun đó chưa được cài đặt cho một 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 cá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 định cấu hình trình phát hiện đó để chỉ 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 kết quả

Kotlin

val rawValue: String? = barcode.rawValue

Java

String rawValue = barcode.getRawValue();