Firebase ML Kit: Quét mã vạch ( Barcode Scanning) trong Android

Đăng bởi: Admin | Lượt xem: 1544 | Chuyên mục: Android

API quét mã vạch của ML Kit hoạt động trên chính thiết bị giúp thiết bị nhanh và chính xác.


1. Giới thiệu

Quét mã vạch được sử dụng để đọc dữ liệu được mã hóa trong mã vạch.

Mã vạch có thể lưu trữ dữ liệu thành hình ảnh in / kỹ thuật số có thể dễ dàng đọc được bằng các ứng dụng . Trong trường hợp Mã QR 2D, chúng ta cũng có thể mã hóa dữ liệu có cấu trúc như thông tin liên hệ hoặc thông tin mạng WiFi.

API quét mã vạch của ML Kit hoạt động trên chính thiết bị giúp thiết bị nhanh và chính xác.

2. Quét mã vạch của ML Kit

API quét mã vạch của ML Kit cung cấp các tính năng chính sau.

  • API có thể đọc gần như tất cả các định dạng mã vạch tiêu chuẩn.
  • API theo mặc định quét tất cả các định dạng mã vạch được hỗ trợ. Tuy nhiên, bạn có thể tăng tốc quá trình này bằng cách chỉ định rõ ràng các định dạng bạn muốn đọc.
  • API cũng có thể phân tích dữ liệu có cấu trúc được lưu trữ trong mã QR 2D.
    Dữ liệu như URL, thông tin liên lạc, địa chỉ email, số điện thoại, thông tin kết nối WiFi, v.v.

3. Cài đặt

Bước 1: Thêm Firebase vào ứng dụng của bạn

Bạn có thể thêm Firebase vào ứng dụng của mình bằng cách làm theo các bước được đề cập ở đây .

Bước 2: Thêm các phụ thuộc

Bạn cần thêm các phụ thuộc ML Kit tệp build.gradle

dependencies {
  // ...
  implementation 'com.google.firebase:firebase-ml-vision:19.0.2'
}

Bước 2.5: Chỉ định các mô hình ML (tùy chọn)

Đối với API trên thiết bị, bạn có thể định cấu hình ứng dụng của mình để tự động tải xuống các mô hình ML sau khi được cài đặt từ Play Store. Nếu không, mô hình sẽ được tải xuống trong lần đầu tiên bạn chạy trình phát hiện trên thiết bị.

Để bật tính năng này, bạn cần chỉ định các mô hình trong AndroidManifest.xml

<application ...>
  ...
  <meta-data
      android:name="com.google.firebase.ml.vision.DEPENDENCIES"
      android:value="barcode" />
  <!-- To use multiple models: android:value="barcode,model2" -->
</application>

Bước 3: 

ML Kit cung cấp một cách dễ dàng để phát hiện mã vạch từ nhiều loại hình ảnh thích Bitmap, media.Image, ByteBuffer, byte[], hoặc một tập tin trên thiết bị. Bạn chỉ cần tạo một đối tượng FirebaseVisionImage từ các loại hình ảnh được đề cập ở trên và chuyển nó vào mô hình.

Trong ví dụ này, ta sử dụng Bitmap để tạo đối tượng  FirebaseVisionImage

Để tạo FirebaseVisionImageđối tượng từ các loại hình ảnh khác, vui lòng tham khảo tài liệu 

Bước 4:

Chuẩn bị mô hình Quét mã vạch:

val detector = FirebaseVision.getInstance().visionBarcodeDetector

Để tăng tốc quá trình quét mã vạch, ta cũng có thể định cấu hình mô hình của mình để chỉ phát hiện các định dạng mã vạch mà chúng tôi mong đợi nó sẽ đọc.

val options = FirebaseVisionBarcodeDetectorOptions.Builder()
        .setBarcodeFormats(
                FirebaseVisionBarcode.FORMAT_QR_CODE,
                FirebaseVisionBarcode.FORMAT_AZTEC
        )
        .build()
val detector = FirebaseVision.getInstance().getVisionBarcodeDetector(options)

Để biết danh sách đầy đủ các định dạng mã vạch mà ML Kit hỗ trợ, vui lòng tham khảo tài liệu 

Bước 5:

Cuối cùng, chúng ta có thể chuyển hình ảnh của mình cho mô hình để quét mã vạch.

detector.detectInImage(image)
        .addOnSuccessListener {
            // Task completed successfully
        }
        .addOnFailureListener {
            // Task failed with an exception
        }

Bước 6: Trích xuất thông tin


Nếu quét mã vạch thành công, ta sẽ nhận được một danh sách các đối tượng FirebaseVisionBarcode. Mỗi FirebaseVisionBarcode đại diện cho một mã vạch được phát hiện và chứa tất cả các thông tin liên quan đến nó.

Bạn có thể trích xuất tất cả thông tin như thế này.

for (barcode in barcodes) {
    val bounds = barcode.boundingBox
    val corners = barcode.cornerPoints

    val rawValue = barcode.rawValue

    val valueType = barcode.valueType
    when (valueType) {
        FirebaseVisionBarcode.TYPE_WIFI -> {
            val ssid = barcode.wifi?.ssid
            val password = barcode.wifi?.password
            val type = barcode.wifi?.encryptionType
        }
        FirebaseVisionBarcode.TYPE_URL -> {
            val title = barcode.url?.title
            val url = barcode.url?.url
        }
        // etc...
    }
}

Kết quả

             

       

Mã nguồn đầy đủ:

https://github.com/hitanshu-dhawan/FirebaseMLKit/tree/master/app/src/main/java/com/hitanshudhawan/firebasemlkitexample/barcodescanning

vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: Android

Học Kotlin cơ bản
Số bài học:
Lượt xem: 17085
Đăng bởi: Admin
Chuyên mục: Android

Học lập trình Flutter cơ bản
Số bài học:
Lượt xem: 55176
Đăng bởi: Admin
Chuyên mục: Android

Lập trình Android cơ bản
Số bài học:
Lượt xem: 22223
Đăng bởi: Admin
Chuyên mục: Android