Tested: Java midlet QR code readers

💡
Update 2023 - these days, mobile phone camera apps can read QR codes natively. Back in 2010, it was pre-iPhone and pre-Android, so reading them was more complicated. The example QR codes at the end of this post still work and can be useful in testing.

QR Code readers are as easy as pie on smartphones such as the iPhone and Android-based phones. The ZXing barcode app for those platforms does a great job of decoding almost everything you can throw at it. The story isn’t quite as happy for owners of other types of mobiles who have to use J2ME/JavaME applications.

I’ve tested 7 different Java QR Code readers using a number of QR Codes (both on screen and printed) on my SonyEricsson C905. The C905 is a CyberShot telephone with an auto-focus 8MP Carl Zeiss lens. The camera is one of the best I’ve seen on a mobile. That said, scanning QR Codes with Java apps has, by and large, been an awful experience.

i-Nigma logo

i-Nigma – Best in test

Of the 7 free apps I tested i-Nigma was the only one that I can genuinely call useful. When I say useful, I mean it actually decoded every code I threw at it! It makes use of the auto focus, decodes quite quickly & keeps a history of what you’ve decoded. It didn’t made use of the phone’s flash, but it did manage to decode my low-light test code after a few attempts.

It also understood a number of different types of encoded data.

  • Contact details – offering to save the vCard to contacts.
  • Telephone numbers – offering to dial the number.
  • Email addresses – offering to send an email.
  • SMS – offering to send the SMS to the specifed number.

Everything it didn’t understand it displayed as text.

The application also offers a auto-power saving mode and the ability to recode the data back into a QR-code. You can also reasonably easily share the decode info on Facebook or Twitter. It is all in all a nice application to use.

Neoreader

It Auto-focused, and didn’t use the camera’s flash. It decoded as many codes as the test-winning i-Nigma, but what stopped Neoreader from being a joint-winner is that the application isn’t as nice to use, and it considered most things it decoded as a URLs and offered to open them – even if it was a vCard for example. It did though correctly deal with SMSes and telephone numbers.

BarcodeReader (ZXing)

This reader is the most common barcode scanner on Android phones and works really well on that platform. It auto-focuses and uses the built-in flash. There is a noticeable delay though from when you press the button to scan to when it focuses, and then to when it flashes, and then again to when it makes the shutter noise – and then finally, after what seems like a lifetime, it says if it found a code or not. A lot of time it said “no code found”. The way the user interface is designed makes you wonder whether it’s you that’s doing a bad job of taking the photo or the application doing a bad job of dealing with it.

I didn’t mange to decode any of my on-screen test codes, only the printed ones worked. This is probably due to the flash; but as there is no option to disable it, I couldn’t test that theory.

BeeTagg

Auto-focus, bit sluggish at times. Decoded most larger codes, but failed with smaller ones. It showed all types of codes as decoded text, scrolling across the screen – apart from URLs which it gave you the option of opening.

Kaywa Reader

First problem was a really long drop down list with phone models that was really awkward & slow to navigate, the second and ultimate problem was that I received an error when trying to download the software. Total failure.

Scanlife

No auto-focus. Never managed to get an in-focus scan, subsequently I never managed to get it do decode anything. Total failure.

UpCodeJava

Auto-focused but was incredibly slow at processing the picture. Most significantly it didn’t manage to decode any QR Codes at all. Total failure.

The Test Codes

I used 7 codes in my testing (although I have over a period of time tested all of the applications with more QR codes). 6 of them were generated using ZXing’s QR Code generator. 1 of them was my business card pined to the fridge in our kitchen. This code in this environment was used as my low-light test. I also printed out the MeCard contact details code.

Here are the codes, so you can test yourself:

Printed code in Low-light

Picture of a QR code in poor light

MeCard

MeCard QR Code

vEvent

MeCard

URL

MeCard QR Code

Geo-location

MeCard QR Code

SMS

MeCard QR Code

Phone number

MeCard QR Code