markusfisch / BinaryEye

Yet another barcode scanner for Android
https://play.google.com/store/apps/details?id=de.markusfisch.android.binaryeye
MIT License
1.43k stars 117 forks source link

Micro QR-code support #287

Closed MrApplejuice closed 1 year ago

MrApplejuice commented 2 years ago

Hey all (or to the maintainer)! First of all - awesome app. I use it A LOT!

This is a probably feature request. I do not know much about libraries for QR code detection etc., so this is rather uninformed on my side.

I was testing the QR-codes of the Python segno library (see here). Everything works fine, even the animated QR codes - urgh - except for the micro qr codes.

I was reading up on the backing library zxing a bit and when you dig deep, you can find a google group discussing to add micro qr code support to the library. So I guess it is not in the the base library, therefore not in BinaryEye - is that correct?

If there should be any support for this, what would be the best way to get them working, you think? Find a different library to use alongside zxing or actually contribute to zxing to make it part of that library? I would guess that finding a specific library for micro qr codes would be easier because that could even be written from scratch, but maybe this is not desired?

Any ideas/pointers on that?

Note: This is more an explorational inquiry from my side, I am not really sure if I can spend any time on the issue, even though I am interested in micro QR codes. I do not need them SO much - but maybe others are interested as well?

markusfisch commented 2 years ago

Hi, and thanks for contributing! πŸ˜„

Reading MicroQR Codes will soon be possible once I migrated Binary Eye to the C++ fork of ZXing which supports MicroQR Codes, too.

The C++ fork is much faster and, more importantly, much better maintained and still actively developed (which is why it supports MicroQR Codes). This change will also allow me to drop RenderScript, which was recently deprecated.

For the curious reader: I already used the C++ fork in my BarcodeScannerView component that can be used in other apps. It's using an improved Android wrapper that has fewer requirements and aims to be a full replacement for the original ZXing Java implementation.

MrApplejuice commented 2 years ago

Hey, thanks for the feedback! Well, if the solution already is known and in the strategic planning for BinaryEye, I guess that this does not need any kind of spot-fixes on this repository. Very neat indeed.

I assume that the only thing that is in the way of Micro QR-codes becoming a reality is time-commitment of someone to do the migration to zxing-cpp?

markusfisch commented 2 years ago

Yes, that is certainly a factor, but the C++ fork also lacks support for inverted barcodes at this point (which is the one last thing that is important to me) and I would want to add this feature before migrating to it. I also use the C++ fork in multiple projects in my day job, so it makes sense to address this issue first to avoid double work.

The migration itself isn't that much work actually. I've already migrated some other projects which is why the additonal Android wrapper exists. So it may not be long πŸ˜‰

markusfisch commented 1 year ago

Version 1.53.+ is using the C++ fork and supports Micro QR Codes now!

It's still in Beta on Google Play, but already available on F-Droid and directly from GitHub.

MrApplejuice commented 1 year ago

Hey! Wow... that was fast! And also: I am not sure if that is because it is not a C++ implementation, but the detection itself feels faster, too!

Thank you very much, this will come in very handy :-)