Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
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 sử dụng camera, đồng thời vẫn bảo vệ quyền riêng tư của người dùng. Việc này được thực hiện bằng cách uỷ quyền 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).
Tất cả 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ã giống 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 với những ứng dụng yêu cầu quét mã liền mạch mà không cần giao diện người dùng hoặc trải nghiệm camera tuỳ chỉnh. Quy trình triển khai hoàn toàn nằm trong Dịch vụ Google Play, đảm bảo tác động tối thiểu đế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 camera. Khi người dùng hướng 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. Điều này giúp bạn không cần phải điều chỉnh mức thu phóng theo cách thủ công, nhờ đó giúp việc quét mã vạch diễn ra nhanh hơn, chính xác hơn và dễ dàng 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 phải có 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 trợ giúp, hãy xem trang cộng đồng ML Kit.
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.
Bạn cũng có thể kiểm tra rõ ràng phạm vi cung cấp của mô-đun trình 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 xuống tại thời điểm cài đặt hoặc yêu cầu tải xuống rõ ràng (và mô-đun trình 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 trình quét xuống vào lần đầu tiên mô-đun này được 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ững định dạng mã vạch mà 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 những đị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:
Theo mặc định, tính năng tự động thu phóng sẽ tắt. Để bật chức năng tự động thu phóng bắt đầu từ phiên bản 16.1.0, hãy gọi enableAutoZoom() như minh hoạ trong ví dụ về mã sau.
Kotlin
valoptions=GmsBarcodeScannerOptions.Builder().setBarcodeFormats(...).enableAutoZoom()// available on 16.1.0 and higher.build()
Java
GmsBarcodeScannerOptionsoptions=newGmsBarcodeScannerOptions.Builder().setBarcodeFormats(...).enableAutoZoom()// available on 16.1.0 and higher.build();
Lấy một thực thể của GmsBarcodeScanner, như minh hoạ trong ví dụ về mã:
Kotlin
valscanner=GmsBarcodeScanning.getClient(this)// Or with a configured options// val scanner = GmsBarcodeScanning.getClient(this, options)
Java
GmsBarcodeScannerscanner=GmsBarcodeScanning.getClient(this);// Or with a configured options// GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);
[null,null,["Cập nhật lần gần đây nhất: 2025-09-04 UTC."],[[["\u003cp\u003eThe Google Code Scanner API enables code scanning without requiring camera permission, preserving user privacy by delegating the task to Google Play services.\u003c/p\u003e\n"],["\u003cp\u003eIt supports various code formats, returns a \u003ccode\u003eBarcode\u003c/code\u003e object, and is ideal for apps needing seamless code scanning without a custom UI.\u003c/p\u003e\n"],["\u003cp\u003eAuto-zoom, available from version 16.1.0, automatically zooms in on barcodes, eliminating the need for manual adjustments and making scanning faster and more accurate.\u003c/p\u003e\n"],["\u003cp\u003eThe API uses an unbundled library downloaded before use and requires Android API level 21 or higher.\u003c/p\u003e\n"],["\u003cp\u003eFor complex use cases requiring a custom UI, the ML Kit Barcode Scanning API is recommended.\u003c/p\u003e\n"]]],[],null,["The Google code scanner API provides a complete solution for scanning code\nwithout requiring your app to request camera permission, while preserving user\nprivacy. This is accomplished by delegating the task of scanning the code to\nGoogle Play services and returning only the scan results to your app (Video 1).\nAll image processing occurs on the device and Google doesn't store the results\nor image data. The API supports the same code formats as the\n[ML Kit Barcode Scanning API](/ml-kit/vision/barcode-scanning) and returns the\nsame [`Barcode`](/android/reference/com/google/mlkit/vision/barcode/common/Barcode)\nobject.\n\nThis API is ideal for apps that require seamless code scanning without the need\nfor a custom UI or camera experience. The implementation resides entirely within\nGoogle Play services, ensuring minimal impact on the size of your app.\n\nStarting with version 16.1.0, you can enable auto-zoom to allow the Google code\nscanner to automatically scan barcodes that are far away from the camera. When\nusers point their devices at a barcode, the scanner will intelligently detect\nand zoom in on the barcode. This eliminates the need for manual zoom\nadjustments, making barcode scanning faster, more accurate and more accessible\n(see Video 2).\n\n|------------------------------------------|---------------------------|\n| | |\n| Video 1. Google code scanner integration | Video 2. Auto-zoom effect |\n\n\u003cbr /\u003e\n\nFor more complex use cases that require a custom UI, we recommend using the\n[ML Kit Barcode Scanning API](/ml-kit/vision/barcode-scanning) directly.\n\nIf you have questions, want to submit a bug, or need assistance, check the\n[ML Kit community page](/ml-kit/community).\n| This API uses an unbundled library that must be downloaded before use. See [this guide](/ml-kit/tips/installation-paths) for more information.\n\nBefore you begin This API requires Android API level 21 or above. Make sure that your app's build file uses a `minSdkVersion` value of 21 or higher.\n\nTo prepare your app, complete the steps in the following sections.\n\nConfigure your app\n\n1. In your top-level `settings.gradle` file, include\n [Google's Maven repository](https://maven.google.com/web/index.html) and\n [Maven central repository](https://search.maven.org/artifact) in under the\n `dependencyResolutionManagement` block:\n\n dependencyResolutionManagement {\n repositories {\n google()\n mavenCentral()\n }\n }\n\n2. Add the Google Play services dependency for the `play-services-code-scanner`\n SDK to your module's Gradle build file, which is commonly `app/build.gradle`:\n\n dependencies {\n implementation 'com.google.android.gms:play-services-code-scanner:16.1.0'\n }\n\n3. You can configure your app to have Google Play services automatically\n download the scanner module to the device while your app is installed from\n the Play Store.\n\n \u003capplication ...\u003e\n ...\n \u003cmeta-data\n android:name=\"com.google.mlkit.vision.DEPENDENCIES\"\n android:value=\"barcode_ui\"/\u003e\n ...\n \u003c/application\u003e\n\n You can also explicitly check the scanner module availability and request\n download through Google Play services [ModuleInstallClient\n API](https://developers.google.com/android/guides/module-install-apis).\n\n If you don't enable install-time module downloads or request explicit\n downloads---and the scanner module isn't already installed for another\n use case---Google Play services downloads the scanner module the first\n time it's used.\n\nScan a code\n\nImplement the following steps to scan a barcode.\n\n1. Optional: Configure the code scanner.\n\n If you know which barcode formats you expect to read, you can improve the\n speed of the barcode detector by configuring it to only detect those\n formats. For example, to detect only Aztec code and QR codes, build a\n [`GmsBarcodeScannerOptions`](/android/reference/com/google/mlkit/vision/codescanner/GmsBarcodeScannerOptions.Builder)\n object as in the following example: \n\n Kotlin \n\n ```kotlin\n val options = GmsBarcodeScannerOptions.Builder()\n .setBarcodeFormats(\n Barcode.FORMAT_QR_CODE,\n Barcode.FORMAT_AZTEC)\n .build()\n ```\n\n Java \n\n ```java\n GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()\n .setBarcodeFormats(\n Barcode.FORMAT_QR_CODE,\n Barcode.FORMAT_AZTEC)\n .build();\n ```\n\n By default, auto-zoom is turned off. To enable auto-zoom functionality\n starting in version 16.1.0, call `enableAutoZoom()` as shown in the\n following code example. \n\n Kotlin \n\n ```kotlin\n val options = GmsBarcodeScannerOptions.Builder()\n .setBarcodeFormats(...)\n .enableAutoZoom() // available on 16.1.0 and higher\n .build()\n ```\n\n Java \n\n ```java\n GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()\n .setBarcodeFormats(...)\n .enableAutoZoom() // available on 16.1.0 and higher\n .build();\n ```\n2. Get an instance of [`GmsBarcodeScanner`](/android/reference/com/google/mlkit/vision/codescanner/GmsBarcodeScanner),\n as shown in the code example:\n\n Kotlin \n\n ```kotlin\n val scanner = GmsBarcodeScanning.getClient(this)\n // Or with a configured options\n // val scanner = GmsBarcodeScanning.getClient(this, options)\n ```\n\n Java \n\n ```java\n GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this);\n // Or with a configured options\n // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);\n ```\n3. Request a code scanning by calling [`startScan()`](/android/reference/com/google/mlkit/vision/codescanner/GmsBarcodeScanner#startScan()).\n\n Kotlin \n\n ```kotlin\n scanner.startScan()\n .addOnSuccessListener { barcode -\u003e\n // Task completed successfully\n }\n .addOnCanceledListener {\n // Task canceled\n }\n .addOnFailureListener { e -\u003e\n // Task failed with an exception\n }\n ```\n\n Java \n\n ```java\n scanner\n .startScan()\n .addOnSuccessListener(\n barcode -\u003e {\n // Task completed successfully\n })\n .addOnCanceledListener(\n () -\u003e {\n // Task canceled\n })\n .addOnFailureListener(\n e -\u003e {\n // Task failed with an exception\n });\n ```\n4. Handle the resulting [`Barcode`](/android/reference/com/google/mlkit/vision/barcode/common/Barcode).\n\n Kotlin \n\n ```kotlin\n val rawValue: String? = barcode.rawValue\n ```\n\n Java \n\n ```java\n String rawValue = barcode.getRawValue();\n ```"]]