2013-03-21 3 views
1

QR 및 바코드 스캔을 위해 Zxing Lib을 사용하고 있습니다. 내 코드는 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); 

도움이 될만한 항목이 있습니다. 내 응용 프로그램에서 내가 LIB 다음과 같은 형식을 zxing에서

InTENTINTEGRATOR

를 사용할 수는

 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); 

+0

"이 작동하지 않습니다!" IntentIntegrator를 사용할 수없는 이유는 무엇입니까? 그것은 정확히 당신이 게시 한 것, 그 이상 또는 그 이하를 올바르게 수행합니다. –

+0

@SeanOwen .. 답변 해 주셔서 감사합니다. IntentIntegrator를 사용할 때 사용자에게 바코드 스캐너 (타사 앱)를 설치하라는 메시지가 표시되지만 내 앱에 제 3 자 앱이 없어야합니다. – DJhon

+0

어째서 인 텐트를 사용하고 있습니까? 이는 타사 앱에 액세스하기위한 용도로만 사용됩니다. –

답변

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

+0

@ Sandyiscool ... 빠른 응답을 보내 주셔서 감사합니다. 그러나 지난 3 일간 양식을 작성하십시오. 즉, 72 시간 동안 모든 블로그 및 자습서를 검색했습니다. 당신의 제안은 나를 위해 일하고있다 ... 심지어 당신의 제안은 나를 위해 일하지 않고있다 ... 나는 아주 엉망이다 ... PLZ help me – DJhon

+0

명시 적 포맷을 전혀 설정하지 않으려 고 했는가? 즉, 수동으로 인 텐트를 보내지 않으려 고 시도 했는가? "SCAN_MODE"속성을 설정 하시겠습니까? 읽으려는 바코드가 zxing 라이브러리에서 언급 한 표준 바코드 형식을 준수하면 잘 읽어야합니다. – sandyiscool

+0

@ sandy ... 귀하의 질문에 대한 나의 질문을 편집했습니다 – DJhon

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); 
      } 
     } 
    } 
} 

을 확인 바코드 스캔이 사용} provided-입니다
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; 

}

+0

@ Maya, 귀하의 응답은 정말 상당한 것입니다,하지만 Zxing LIB와 함께 스캔 바코드를 요청하고 있습니다 – DJhon

+0

형식은 이미 ZXing Lib에 정의되어 있습니다. 그래서 우리가 여기서 정의하는 이유는 무엇입니까 ?? – DJhon

+1

바코드 스캐닝과 관련이 없습니다. 그것은 그것들을 인코딩하는 것과 관련이 있습니다. –

관련 문제