API quét mã của Google cung cấp giải pháp hoàn chỉnh để quét mã
mà không cần yêu cầu ứng dụng phải yêu cầu quyền truy cập vào camera mà vẫn giữ được người dùng
quyền riêng tư. Điều này được thực hiện bằng cách giao nhiệm 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 (Video 1).
Toàn bộ quá trình 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 này hỗ trợ các định dạng mã tương tự như
API Quét mã vạch của bộ công cụ học máy và trả về
cùng một Barcode
.
Đây là API lý tưởng cho những ứng dụng yêu cầu quét mã liền mạch mà không cần để có trải nghiệm giao diện người dùng hoặc máy ảnh tuỳ chỉnh. Việc triển khai hoàn toàn nằm trong Dịch vụ Google Play, giúp giảm thiểu tác động đến kích thước ứng dụng của bạn.
Kể từ phiên bản 16.1.0, bạn có thể bật tính năng tự động thu phóng để cho phép mã Google máy quét để tự động quét mã vạch ở xa máy ảnh. Thời gian người dùng hướng thiết bị của họ vào mã vạch, trình quét sẽ phát hiện thông minh rồi phóng to mã vạch đó. Việc này giúp bạn không cần tự thu phóng điều chỉnh, giúp việc quét mã vạch nhanh hơn, chính xác hơn và dễ truy cập hơn (xem Video 2).
Video 1. Tích hợp trình quét mã của Google | Video 2. Hiệu ứng tự động thu phóng |
Đối với các trường hợp sử dụng phức tạp hơn đòi hỏi giao diện người dùng tuỳ chỉnh, bạn nên dùng thuộc tính trực tiếp API quét mã vạch của bộ công cụ học máy.
Nếu bạn có câu hỏi, muốn gửi lỗi hoặc cần hỗ trợ, hãy xem Trang cộng đồng Bộ công cụ học máy.
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
Trong tệp
settings.gradle
cấp cao nhất, hãy thêm Kho lưu trữ Maven của Google và Kho lưu trữ trung tâm Maven trong KhốidependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
Thêm phần phụ thuộc Dịch vụ Google Play cho
play-services-code-scanner
SDK cho 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.1.0' }
Bạn có thể định cấu hình ứng dụng để các dịch vụ của Google Play tự động được bật tải mô-đun trình quét xuống thiết bị trong khi ứng dụng của bạn đượ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 một cách rõ ràng tính sẵn có của mô-đun máy quét và yêu cầu tải xuống thông qua ModuleInstallClient của dịch vụ Google Play .
Nếu bạn không bật tải xuống mô-đun tại thời điểm cài đặt hoặc yêu cầu nội dung tục tĩu tải xuống—và mô-đun máy quét chưa được cài đặt cho trường hợp sử dụng – Dịch vụ Google Play tải mô-đun máy quét xuống trước tiên thời gian sử dụng.
Quét mã
Thực hiện các bước sau để quét mã vạch.
Không bắt buộc: Định cấu hình trình quét mã.
Nếu biết định dạng mã vạch nào bạn muốn đọc, bạn có thể cải thiện của trình phát hiện mã vạch bằng cách định cấu hình để chỉ phát hiện những . Ví dụ: để chỉ phát hiện mã Aztec và mã QR, hãy tạo một
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();
Theo mặc định, tính năng tự động thu phóng được tắt. Để bật chức năng tự động thu phóng kể từ phiên bản 16.1.0, hãy gọi
enableAutoZoom()
như trong đoạn mã ví dụ sau.Kotlin
val options = GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build()
Java
GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build();
Nhận một thực thể của
GmsBarcodeScanner
, như trong đoạn mã ví dụ: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);
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 });
Xử lý
Barcode
thu được.Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();