Barcode/Qr Code Reader for Android
Solution 1
I used zxing to build into my application. You will need a bit of coding. First include core.jar , its at core/core.jar,in your build path, then go to their client ,its at android/..../com.google.zxing, and get their code(This is not recommended by the devs, because your copy and pasting.) last, Add this code:
package com.wtsang02.activities;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.ChecksumException;
import com.google.zxing.FormatException;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Reader;
import com.google.zxing.Result;
import com.google.zxing.ResultPoint;
import com.google.zxing.common.HybridBinarizer;
public class QRDecoder extends Activity implements OnClickListener {
private String text;
private Button webbutton;
private Bitmap bmp;
private ImageView ivPicture;
private TextView textv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mysales);
webbutton = (Button)findViewById(R.id.webbutton);
ivPicture = (ImageView) findViewById(R.id.ivPicture);
textv= (TextView) findViewById(R.id.mytext);
webbutton.setOnClickListener(this);
}
private void decode() {
if (bmp == null) {
Log.i("tag", "wtf");
}
bmp = bmp.copy(Bitmap.Config.ARGB_8888, true);
int[] intArray = new int[bmp.getWidth() * bmp.getHeight()];
bmp.getPixels(intArray, 0, bmp.getWidth(), 0, 0, bmp.getWidth(),
bmp.getHeight());
LuminanceSource source = new com.google.zxing.RGBLuminanceSource(
bmp.getWidth(), bmp.getHeight(), intArray);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new MultiFormatReader();
try {
Result result = reader.decode(bitmap);
text = result.getText();
byte[] rawBytes = result.getRawBytes();
BarcodeFormat format = result.getBarcodeFormat();
ResultPoint[] points = result.getResultPoints();
textv.setText(text);
} catch (NotFoundException e) {
e.printStackTrace();
} catch (ChecksumException e) {
e.printStackTrace();
} catch (FormatException e) {
e.printStackTrace();
}
Log.i("done", "done");
if(text!=null)
Toast.makeText(getBaseContext(), text, Toast.LENGTH_LONG).show();
else{
Toast.makeText(getBaseContext(), "QQ", Toast.LENGTH_LONG).show();
}
}
@Override
public void onClick(View v) {
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
bmp = (Bitmap) extras.get("data");
ivPicture.setImageBitmap(bmp);
decode();
}
}
}
This code will use your phone's default camera, if you need to use their client, you will need to start their CaptureActivity
, Your layout should include a TextView
to show results, ImageView
to show the image you captured, and Button
to start the camera. . This is based off of 2.1zxing.
Solution 2
You can use:
Related videos on Youtube
user1437481
Updated on September 19, 2022Comments
-
user1437481 over 1 year
i would like to implement a QR Code/Barcode reader within my application. I would like to know what is the most lightweight solution to do this (disregarding intent integrator from zxing).
-
kjurkovic over 11 yearswhat is wrong with intent integrator from zxing?
-
user1437481 over 11 yearsi dont want users to leave the app in order to download barcode scanner, i want a solution within the app
-
Adrián Rodríguez over 11 yearsyou can use zxing as part of your application. Just add it as a library and use it calling the capture intent.
-
-
user1437481 over 11 yearsgoing to give it a try in a minute
-
user1437481 over 11 yearsget what code from the client?i misunderstood that part
-
Sean Owen over 11 years+1 for showing how to build a simple new app instead of copying the Barcode Scanner app totally.
-
wtsang02 over 11 yearsupdated the post, where i state the location. Its basiclly all in the zip file, where you downloaded zxing2.1
-
user1437481 over 11 yearscant seem to pick QR or BARCODE only on this one
-
tejas about 11 yearsThis code throws me exception as soon as it starts and app crashes :(
-
tejas about 11 yearscom.google.zxing.NotFoundException, i was asked to add this exception while writing the lines LuminanceSource source = new RGBLuminanceSource(200, 200, intArray); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Reader reader = new MultiFormatReader(); Result result = reader.decode(bitmap);
-
tejas about 11 yearsWhile I debugged for it, I found that bitmap object is null I mean matrix is null in that. So it is throwing exception while decoding it at Result result = reader.decode(bitmap);
-
tejas about 11 yearsI have followed exact steps mentioned by you.Image is getting captured and is setting to the imageview but only while decoding it gives me the problem and string text becomes null and else block is executed
-
wtsang02 about 11 yearsIf you get NotFoundExcetion , 2 reasons, 1) have you correctly import the library? 2) have you added the Activity to your manifest? Since this exact code works on my device, I don't think the code is the problem.