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 đòi hỏi ứng dụng của bạn phải yêu cầu quyền truy cập vào camera, trong khi vẫn đảm bảo 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 quét mã cho Dịch vụ Google Play và chỉ trả về kết quả quét cho ứng dụng (Video 1).
Toàn bộ quá trình xử lý hình ảnh 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 đối tượng Barcode
.
API này phù hợp cho các ứng dụng yêu cầu quét mã liền mạch mà không cần trải nghiệm giao diện người dùng tuỳ chỉnh hay máy ảnh. Việc triển khai hoàn toàn nằm trong Dịch vụ Google Play, đảm bảo 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 trình quét mã của Google tự động quét mã vạch ở xa máy ảnh. Khi người dùng trỏ thiết bị vào một mã vạch, trình quét sẽ phát hiện và phóng to mã vạch đó một cách thông minh. Việc này giúp bạn không cần phải điều chỉnh mức thu phóng thủ công, nhờ đó, quá trình quét mã vạch trở nên nhanh hơn, chính xác hơn và dễ tiếp cận 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 yêu cầu giao diện người dùng tuỳ chỉnh, bạn nên sử dụng 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ó thắc mắc, muốn gửi lỗi hoặc cần được hỗ trợ, hãy truy cập vào 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 đưa Kho lưu trữ Maven của Google và Kho lưu trữ trung tâm Maven vào trong khốidependencyResolutionManagement
:dependencyResolutionManagement { repositories { google() mavenCentral() } }
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.1.0' }
Bạn có thể định cấu hình ứng dụng để Dịch vụ Google Play tự động tải mô-đun trình quét xuống thiết bị trong khi cài đặt ứng dụng 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 sử dụng mô-đun máy quét và yêu cầu tải xuống thông qua ModuleInstallClient API của Dịch vụ 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 rõ ràng (và mô-đun máy quét chưa được cài đặt cho một trường hợp sử dụng khác), thì Dịch vụ Google Play sẽ tải mô-đun máy quét xuống vào lần đầu tiên bạn 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 tốc độ 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 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();
Theo mặc định, tính năng tự động thu phóng sẽ bị tắt. Để bật tính năng tự động thu phóng kể từ phiên bản 16.1.0, hãy gọi
enableAutoZoom()
như trong mã ví dụ sau đây.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 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();