1

私はZxingLibを使用してQRとバーコードをスキャンしています。私のコードはQRコードでは非常にうまく機能していますが、残念ながらバーコードでは機能していません。

    Intent intent = new Intent("com.google.zxing.client.android.SCAN");
    intent.setPackage("com.google.zxing.client.android");
    intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
    startActivityForResult(intent, 0);

どんな助けでも本当に感謝します。私のアプリでは、InTENTINTEGRATORを使用できません

zxingLIBでは次の形式が提供されます-

       static final Collection<BarcodeFormat> PRODUCT_FORMATS;
       static final Collection<BarcodeFormat> ONE_D_FORMATS;
       static final Collection<BarcodeFormat> QR_CODE_FORMATS =         EnumSet.of(BarcodeFormat.QR_CODE);
    static final Collection<BarcodeFormat> DATA_MATRIX_FORMATS = EnumSet.of(BarcodeFormat.DATA_MATRIX);
     static {
    PRODUCT_FORMATS = EnumSet.of(BarcodeFormat.UPC_A,
                             BarcodeFormat.UPC_E,
                             BarcodeFormat.EAN_13,
                             BarcodeFormat.EAN_8,
                             BarcodeFormat.RSS_14);
ONE_D_FORMATS = EnumSet.of(BarcodeFormat.CODE_39,
                           BarcodeFormat.CODE_93,
                           BarcodeFormat.CODE_128,
                           BarcodeFormat.ITF);
ONE_D_FORMATS.addAll(PRODUCT_FORMATS);

}

4

2 に答える 2

1

これをバーコードスキャンに使用します

private void drawResultPoints(Bitmap barcode, Result rawResult) {
    ResultPoint[] points = rawResult.getResultPoints();
    if (points != null && points.length > 0) {
        Canvas canvas = new Canvas(barcode);
        Paint paint = new Paint();
        paint.setColor(getResources().getColor(R.color.result_points));
        if (points.length == 2) {
            paint.setStrokeWidth(4.0f);
            drawLine(canvas, paint, points[0], points[1]);
        } else if (points.length == 4
                && (rawResult.getBarcodeFormat() == BarcodeFormat.UPC_A || rawResult
                        .getBarcodeFormat() == BarcodeFormat.EAN_13)) {
            // Hacky special case -- draw two lines, for the barcode and
            // metadata
            drawLine(canvas, paint, points[0], points[1]);
            drawLine(canvas, paint, points[2], points[3]);
        } else {
            paint.setStrokeWidth(10.0f);
            for (ResultPoint point : points) {
                canvas.drawPoint(point.getX(), point.getY(), paint);
            }
        }
    }
}

これもチェックしてください

 private boolean encodeContentsFromZXingIntent(Intent intent) {
 // Default to QR_CODE if no format given.
String formatString = intent.getStringExtra(Intents.Encode.FORMAT);
format = null;
if (formatString != null) {
  try {
    format = BarcodeFormat.valueOf(formatString);
  } catch (IllegalArgumentException iae) {
    // Ignore it then
  }
}
if (format == null || format == BarcodeFormat.QR_CODE) {
  String type = intent.getStringExtra(Intents.Encode.TYPE);
  if (type == null || type.length() == 0) {
    return false;
  }
  this.format = BarcodeFormat.QR_CODE;
  encodeQRCodeContents(intent, type);
} else {
  String data = intent.getStringExtra(Intents.Encode.DATA);
  if (data != null && data.length() > 0) {
    contents = data;
    displayContents = data;
    title = activity.getString(R.string.contents_text);
  }
}
return contents != null && contents.length() > 0;

}

于 2013-03-21T06:51:46.877 に答える
0

スキャンモードを変更してみてください。次のようなものを試してください:

intent.putExtra("SCAN_MODE", "PRODUCT_MODE");

また

intent.putExtra("SCAN_MODE", "ONE_D_MODE");

詳細については、次のページをご覧ください: https ://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/Intents.java

于 2013-03-21T06:58:33.943 に答える