使用Zxing的BarCode Reader

时间:2012-06-28 09:42:38

标签: android android-intent

我使用Zxing库读取QR / BarCode,目前我的项目是从Sdcard读取Qr / Barcode并解码它

我想使用我的设备相机扫描代码然后解码,我如何更改我的代码,以便它在这里工作。

这是我的代码

  public static class Global
{
    public static String text=null;
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Bitmap bMap = BitmapFactory.decodeFile("/sdcard/2.gif");
    TextView textv = (TextView) findViewById(R.id.mytext);
    View webbutton=findViewById(R.id.webbutton);
    LuminanceSource source = new RGBLuminanceSource(bMap); 
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
    Reader reader = new MultiFormatReader();
    try {
         Result result = reader.decode(bitmap);
         Global.text = result.getText(); 
            byte[] rawBytes = result.getRawBytes(); 
            BarcodeFormat format = result.getBarcodeFormat(); 
            ResultPoint[] points = result.getResultPoints();
            textv.setText(Global.text);
            webbutton.setOnClickListener(this);
    } catch (NotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ChecksumException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (FormatException e) {
        // TODO Auto-generated catch block
e.printStackTrace();


    }   
}

@Override
public void onClick(View v) {
    Uri uri = Uri.parse(Global.text); 
    Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
    startActivity(intent);




}

2 个答案:

答案 0 :(得分:0)

这取决于您是否喜欢使用像zxing这样的外部应用程序(在这种情况下,您只需发送意图并为您扫描条形码并返回结果),或者在您的应用程序中执行所有操作。在这种情况下,您需要代码来管理预览图像,拍摄图片并将数据馈送到ZXing(或其他)库中。

此项目演示: http://sourceforge.net/projects/javaocr/

包含解析条形码的所有内容(图像数据反馈到OCR引擎)

答案 1 :(得分:0)

你需要在你的活动中调用Zxing意图并放松。

首先添加代码以调用Intent:

IntentIntegrator integrator = new IntentIntegrator(yourActivity);
integrator.initiateScan();

其次,将其添加到您的Activity中以处理结果:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
  IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
  if (scanResult != null) {
    // handle scan result
  }
  // else continue with any other code you need in the method
  ...
}

投入时间浏览Zxing的维基页面。他们已经很好地解释了它。

http://code.google.com/p/zxing/w/list

http://code.google.com/p/zxing/wiki/ScanningViaIntent

以下是演示如何调用Zxing意图的示例应用程序。

http://code.google.com/p/zxing/source/browse/trunk/androidtest/src/com/google/zxing/client/androidtest/ZXingTestActivity.java

最后,Test Project + Library位于

http://code.google.com/p/zxing/source/browse/trunk#trunk%2Fandroid-integration%253Fstate%253Dclosed