2011-12-14 26 views
5

Google Zxing mong đợi một hình ảnh. Ai đó có thể chỉ cho tôi cách làm cho nó hoạt động hiệu quả để quét trực tiếp (tức là người dùng chỉ thiết bị ở mã QR và quá trình quét xảy ra; người dùng không phải chụp ảnh)? Tôi đã đi qua hai khía cạnh sau đây:Cách quét mã QR ở chế độ trực tiếp trong Hệ điều hành Blackberry 5

  1. Một số chủ đề gợi ý để sử dụng một bộ đếm thời gian và sự kiện tiêm liên tục chụp ảnh - nhưng phương pháp này có thể phải chịu quá nhiều chi phí trên thiết bị
  2. Một số chủ đề khác đã gợi ý quét trực tiếp chỉ có thể thực hiện từ OS 6 trở lên khi RIM không hiển thị các API đó trong các phiên bản hệ điều hành dưới 6 - nhưng tôi không thể tìm thấy bất kỳ tuyên bố chính thức nào về hiệu ứng này.

Khác với Zxing là bất kỳ thư viện nào khác để đạt được điều tương tự cho BB OS 5?

Cảm ơn trước

+0

zxing không mong đợi một hình ảnh, nó là một thư viện lõi để quét. Tùy thuộc vào ứng dụng/nền tảng để cung cấp nguồn cấp dữ liệu video hay không. Phiên bản trước của BBOS không có cách nào để tải nguồn cấp dữ liệu xem trước. –

+0

@SeanOwen - về mặt kỹ thuật, afaik, zxing mong đợi một bitmap (bạn có thể kiểm tra lớp LuminanceSource)! Vì vậy, người ta có thể lấy khung hình từ một video và xử lý chúng! Thật không may, đó là không thể có hệ điều hành 5 và dưới đây! –

+0

Đồng ý. (Tôi là tác giả.) Bài đăng của bạn dường như đề xuất thư viện yêu cầu nguồn đó là tệp hình ảnh; nó không quan tâm. Nếu bạn có khung hình từ một nguồn cấp dữ liệu video, nó có thể được thực hiện để làm việc thông qua một số LuminanceSource. –

Trả lời

4

This library allows you to do live scanning on OS5. Nó hoạt động như một giao diện cho thư viện ZXing.

Được cảnh báo, tuy nhiên trên thiết bị OS5 FocusControl chưa được triển khai đầy đủ để quét mã vạch gần sẽ gặp sự cố. Giải pháp thay thế là sử dụng VideoControl.getSnapshot() là cách duy nhất để buộc máy ảnh lấy nét.

+1

Thư viện hoạt động hoàn hảo @donturner! cảm ơn! Mặc dù, tôi nên chỉ ra rằng thư viện này sử dụng một phiên bản sửa đổi của phương pháp tiếp cận 1 mà tôi đã liệt kê - nó chụp ảnh chụp màn hình định kỳ (mỗi 2s) và xử lý nó cho mã QR! Không giống như một cách tiếp cận tuyệt vời, nhưng tôi đoán là OS 5 trở xuống, không có tùy chọn nào khác: ( –

1

Để sử dụng tính năng "quét trực tiếp", bạn cần sử dụng API mã vạch, một lớp trên cùng của ZXing chỉ khả dụng trong OS 6.0.

Here bạn có chính thức cách bật API mã vạch. Trong 5.0, bạn sẽ phải triển khai cơ chế tùy chỉnh dựa trên VideoControl. Để thực hiện giải pháp thay thế, bạn có thể chụp ảnh định kỳ theo định kỳ và cố gắng giải mã chúng hoặc chụp khung bằng cách nào đó từ nguồn cấp dữ liệu video.
Như câu trả lời khác cho biết, trong các thiết bị không tự động lấy nét, FocusControl sẽ không hoạt động. Trong trường hợp này, tôi đề nghị bạn áp dụng một số zoom thay vào đó (sử dụng lớp ZoomControl). Điều này buộc người dùng di chuyển blackberry ra khỏi QRCode để có thể nhìn thấy nó trên màn hình, do đó làm tăng định nghĩa của hình ảnh đã chụp, do đó làm tăng khả năng phát hiện một mã vạch.

+0

Điều đó không đúng, bạn có thể thực hiện "quét trực tiếp" bằng cách định kỳ giải mã nguồn cấp dữ liệu đầu vào. với điều này trong OS5 là bạn không có quyền kiểm soát tập trung vì vậy nếu mã gần với máy ảnh, bạn sẽ giải mã một hình ảnh mờ – donturner

+0

Và chỉ để làm rõ, nhiều thiết bị OS5 ** làm ** có khả năng tự động lấy nét trong phần cứng máy ảnh của họ, nhưng API OS5 không cho phép nó được truy cập – donturner

+0

@donturner Bạn nói đúng về ảnh chụp nhanh Và về tiêu điểm, tôi đã sử dụng FocusControl trên 5.0 được đặt thành 'FocusControl.AUTO', nó hoạt động nếu thiết bị của bạn có khả năng tự động lấy nét.Không bao giờ thử với một mức tập trung tùy ý. Để giải quyết sự nhòe ở khoảng cách ngắn, bạn có thể đặt mức thu phóng đến mức tối đa bằng 'ZoomControl'. Trên thực tế đó là màn hình quét trực tiếp trong API mã vạch. –

Các vấn đề liên quan