package com.google.zxing.client.android.decode;
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.RGBLuminanceSource;
import com.google.zxing.Reader;
import com.google.zxing.Result;
import com.google.zxing.ResultPoint;
import com.google.zxing.client.android.R;
import com.google.zxing.client.android.ZXingConstants;
import com.google.zxing.common.HybridBinarizer;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
public class ZXingDecoderActivity extends Activity implements ZXingConstants {
private static final String TAG = "ZXingDecoderActivity";
private String imageFile;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.decode);
init();
}
private final void init() {
imageFile = (String)getIntent().getSerializableExtra(ZXingConstants.RESPONSE_DECODE_IMAGE);
Log.d(TAG, "qr code file"+imageFile);
}
@Override
public void onStart(){
super.onStart();
Bitmap barcodeBmp = BitmapFactory.decodeFile(imageFile);
int width = barcodeBmp.getWidth();
int height = barcodeBmp.getHeight();
int[] pixels = new int[width * height];
barcodeBmp.getPixels(pixels, 0, width, 0, 0, width, height);
barcodeBmp.recycle();
barcodeBmp = null;
RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new MultiFormatReader();
try {
Result result = reader.decode(bitmap);
String contents = result.getText();
Log.d(TAG, "text "+contents);
Intent dataIntent = new Intent();
dataIntent.putExtra(SCAN_RESULT, contents);
setResult(Activity.RESULT_OK, dataIntent);
finish();
} catch (NotFoundException e) {
e.printStackTrace();
return;
} catch (ChecksumException e) {
e.printStackTrace();
return;
} catch (FormatException e) {
e.printStackTrace();
return;
}
}
}