How to create barcode scanner (Android)? How to create barcode scanner (Android)? android android

How to create barcode scanner (Android)?


The ZXing project provides a standalone barcode reader application which — via Android's intent mechanism — can be called by other applications who wish to integrate barcode scanning.

The easiest way to do this is to call the ZXing SCAN Intent from your application, like this:

public Button.OnClickListener mScan = new Button.OnClickListener() {    public void onClick(View v) {        Intent intent = new Intent("com.google.zxing.client.android.SCAN");        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");        startActivityForResult(intent, 0);    }};public void onActivityResult(int requestCode, int resultCode, Intent intent) {    if (requestCode == 0) {        if (resultCode == RESULT_OK) {            String contents = intent.getStringExtra("SCAN_RESULT");            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");            // Handle successful scan        } else if (resultCode == RESULT_CANCELED) {            // Handle cancel        }    }}

Pressing the button linked to mScan would launch directly into the ZXing barcode scanner screen (or crash if ZXing isn't installed). Once a barcode has been recognised, you'll receive the result in your Activity, here in the contents variable.

To avoid the crashing and simplify things for you, ZXing have provided a utility class which you could integrate into your application to make the installation of ZXing smoother, by redirecting the user to the Android Market if they don't have it installed already.

Finally, if you want to integrate barcode scanning directly into your application without relying on having the separate ZXing application installed, well then it's an open source project and you can do so! :)


You can use the existing Zebra Crossing barcode scanner for Android, available at: http://code.google.com/p/zxing/. Typically the idea is that you would invoke it via intents, like in the example here: http://code.google.com/p/zxing/wiki/ScanningViaIntent.


Zebra Crossing is the best documented java 1D or 2D barcode decoder or encoder around. Lots of people use it, and it's become the de facto standard for android. There's a healthy buzz about it on here too.

RedLaser has an api, but you'll have to pay if you use it in production. When I tried it out, I didn't find it to be a spectacular improvement over Zebra Crossing. Certainly not for the price.

jjil does barcodes but there are only 3 committers on the project, and I've never used it myself so I don't know what to tell you about it. Its source is certainly readable.

Once you start reading, you'll find readers are tricky things to implement due to blurry images, noise, distortion, weird angles, and so forth. So if you want something reliable, you probably want to go with a community-maintained library.