2016-11-24 22 views
9

Tôi sử dụng com.google.android.gms.vision.barcode.BarcodeDetector để đọc mã QR. Vấn đề là các mã này mang dữ liệu nhị phân thô; không có số điện thoại, không có URL, không có geopoints ... Tôi không thể thay đổi các mã QR này, bởi vì chúng được tạo ra trong một ứng dụng khác.API mã vạch tầm nhìn Android - đọc mã QR tùy chỉnh với dữ liệu nhị phân

Khi tôi quét các mã QR này bằng API mã vạch Android, đối tượng Barcode kết quả không cho phép tôi truy cập dữ liệu thô, mặc dù nó phải biết!

Tất cả những gì tôi nhận được là "Unknown encoding" thư trong cả hai thuộc tính rawValuedisplayValue.

Có thuộc tính byte[] thay vì hai thuộc tính String sẽ có ý nghĩa hơn vì mã QR có thể mang dữ liệu chung.

Tôi không thấy điểm ẩn mảng byte dữ liệu thô từ nhà phát triển. Tôi có thể mở rộng lớp học BarcodeDetector hoặc lớp học Barcode để có được những gì tôi cần không?

Edit:

Đây là một mã QR hoàn toàn hợp lệ, mà không thể được đọc bởi Vision API, mặc dù nó mang 1024 byte dữ liệu:

enter image description here


QR Codes - raw binary data là liên quan, nhưng nó không giải quyết được vấn đề của tôi.

+0

Đó là một câu hỏi rất mơ hồ ... Tôi cũng sử dụng '... vision.barcode ... 'api, trong mã sản xuất. Bạn có thể chia sẻ một ví dụ QR? – Algar

+0

@Algar Chắc chắn rồi, hãy xem bản chỉnh sửa của tôi. – vojta

+0

Xin lỗi, tôi đã hy vọng tôi chỉ có thể đầu ra (thực) giá trị thô từ nguồn nhưng không may mắn .. Tôi đoán có 'null' giá trị hoặc như vậy trong dữ liệu mà làm cho mã hóa không thành công. Dường như rất xấu hổ rằng dữ liệu thô có sẵn nhưng .. Hãy thử gửi một vấn đề [ở đây] (https://github.com/googlesamples/android-vision/issues). :( – Algar

Trả lời

1

Tôi nghĩ bạn cần phải tự mình viết một số bản triển khai. Như tôi có thể thấy rõ trong API rằng rawData được giữ bởi String mà chỉ đơn giản là không đảm bảo tính toàn vẹn của kiểu dữ liệu nhị phân của bạn.

Tôi sẽ viết BarcodeDetector của riêng mình với đối tượng BarCode của riêng tôi với byte [] làm kiểu dữ liệu cho rawData đến từ QR-Code và ghi đè phương thức detect() để gán rawData vào thực thi BarCode của tôi. Vì trường hợp của bạn rất cụ thể đối với yêu cầu, bạn không nên ngần ngại viết triển khai của riêng bạn. Có thể chia sẻ nó trên github cho những người khác nữa.

1

Tôi đã đọc mã QR có nội dung nhị phân qua this library module. ZXing cũ đã không cung cấp tải trọng nhị phân ra khỏi hộp, tuy nhiên mới không cung cấp tải trọng nhị phân - nhưng theo như tôi nhớ, chỉ là một phần của một định dạng biết.