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

PDF417 - work in progress in ZBar

2D

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.
  • more to come...