Google have an open source 1D/2D code reader named Zxing. I'ts mainly been in the background for the last few months. Details are :-
ZXing (pronounced "zebra crossing"

is an open-source, multi-format 1D/2D barcode reader library implemented in Java. Our goal is to support decoding of QR Codes, Data Matrix, and the UPC family of 1D barcodes.
This is primarily intended as a decoding library for Java, and as the basis for an Android barcode reader client, but, we will also try to provide working clients for JavaME (nee J2ME, MIDP, CLDC), the iPhone, and BlackBerry devices.
This library is divided into several components of interest:
core: core decoding library, and the main component of the entire project
javame: JavaME client
javase: J2SE-specific client code
android: Android client (M5 SDK)
rim: RIM/Blackberry-specific client build
iphone: iPhone client + port to Objective C / C++ (QR code only)
zxingorg: The source behind zxing.org/w
bug: Client for BugLabs's BUG
More info :
http://code.google.com/p/zxing.
I've been playing with the Android dev kit. Not as sleek as Micro$soft development environment but not bad for a first stab.
Android dev kit can be downloaded free from :
http://code.google.com/android/download.html