MBarcode

mBarcode is an application which allows the user to scan barcodes using the device camera and then use the data they contain. mBarcode has a history list which remembers the last 10 scanned barcodes (images and data). mBarcode's barcode payload (i.e. the data encoded in the barcode) handling is implemented through a system of plugins, which you can add to.

Contents

Barcode Types

mBarcode uses ZBar and libdmtx to perform the barcode decoding.

Currently handled barcode types

1D

  • EAN-13/UPC-A (ZBar)
  • UPC-E (ZBar)
  • EAN-8 (ZBar)
  • Code 128 (ZBar)
  • Code 39 (ZBar)
  • Interleaved 2 of 5 (ZBar)

2D

  • Data matrix (libdmtx)
  • QR Code (ZBar)

Other barcode types

Please add other barcode types below and we will fill in the status/likelihood of them being added.

1D

  • (well stacked 1D anyway) PDF417 - work in progress in ZBar

2D

  • Aztec - I'll look into this

Currently handled barcode payloads

  • Weblookup for all payloads (this should handle EAN/UPC until someone writes a specific plugin to present data about them.
  • isbn lookups
  • vCards
  • MECARDs
  • iCal (will be handled as soon as we have Qt Mobility 1.1.x available - code is in SVN, but waiting for functions from Qtm 1.1.x)
  • SMS/MMS
  • Email payloads
  • geo://
  • tel://
  • install files (this is currently disabled as the install files generated huge barcodes, but certainly we could re-implement this if wanted (a la Android), or simply encode a URL to the downloads.maemo.org location.

If there are any other things you'd like to see, please file an enhancement request and/or catch me on IRC to discuss.

Post PR1.3 issues

Some users have reported problems loading plugins after upgrading their N900 device to PR1.3. A reinstall of the mbarcode package and the plugin packages (just reinstall mbarcode-plugins-all to fetch all default ones) has been reported to fix this issue.

With PR1.3 and the newest packages, mbarcode should work fine.

Developers

Plugins

The mBarcode plugin API allows users to write plugins in Qt/C++ or Qt/Python. When a barcode is decoded, the type of barcode and data are passed to the plugins so that they can begin processing if they are interested. The user is then presented with a dialog showing the names of the plugins that are interested, and can select which one to open by clicking on the list.

At this point the plugin in question is informed that it has been selected and is free to open a window or do other processing to handle the barcode payload.

If you would like to get started on developing plugins for mBarcode, please check out our tutorial.

ToDo/Stuff for volunteers

Check the bugtracker enhancement and bug requests of course

Catch me on irc (lardman) if you want to chat about any of these or the following topics.

Other items:

  • Decode from image file - code is in SVN and should really work, but I've obviously made a mistake somewhere (the image data is passed to the decoder threads, and appears to be valid data, and the same format as the video data which does work, when it's output to file to debug it, but still it's not working). I've tested with zbarimg on the pc, so the data that is being fed to mBarcode should work. Any thoughts or extra eyes on the code to spot my mistake gratefully received.
  • Plugin API modification - currently each plugin implements an isReady() method which is called to see whether the plugin is ready to be displayed in the ResultsWindow. This means that we continue to poll plugins to see if they are "ready" when they might in fact not be interested in the barcode payload at all. We should change this to something along the lines of an isInterested() method and an isReady() method for those that are "interested". Talking to Dragly it might be worth implementing this using signals and slots.
  • Support more barcode types - this is mainly down to ZBar (though if you find a good decoder for an unsupported barcode type I'm quite happy to look at adding it in in addition to the current ones). Currently in the works is PDF417 and it would also be good to have things like Aztec. Please head over to the ZBar site to grab their code and do some hacking if you think you can help with this or any other barcodes.
  • Speed up Data Matrix decoding - work is underway in the libdmtx project to re-write the code and make it run faster. I imagine that as with other open source projects, offers of help would be gratefully received.
  • More to be added as I think of them! :)