2014-03-12 9 views
0

내 응용 프로그램에서 QRcode 39 만 스캔하기 위해 Zxing 라이브러리를 사용하고 있습니다. 훌륭한 작품에 대한 sean에게 감사드립니다. 잘 작동하지만 문제는 스캔하는 데 더 많은 시간이 걸리는 것입니다. 전방 카메라와 후방 카메라로 스캔하고 있습니다.안드로이드에 대한 zxing QR 스캔 시간이 빨라지십니까?

내 응용 프로그램에 라이브러리로 zxing 프로젝트를 사용하고 있습니다.

cameraInfo API를 사용하여 전면 카메라 색인을 찾고 ScanCard which extends CaptureActivity ->CameraManager으로 전달합니다.

public class ScanCard extends CaptureActivity { 

@Override 
public void handleDecode(Result rawResult, Bitmap barcode) { 
    // TODO Auto-generated method stub 
    super.handleDecode(rawResult, barcode); 
    mScanResult = rawResult.getText().toString(); 
} 
} 

카메라 관리자 클래스에서 아래와 같이 스캐닝을 위해 앞면을 향한 카메라가 표시되도록 변경되었습니다.

public void openDriver(SurfaceHolder holder, int myCamera) 
    throws IOException { 

Camera theCamera = camera; 

if (theCamera == null) { 
    theCamera = Camera.open(myCamera); 
    if (theCamera == null) { 
     throw new IOException(); 
    } 
    camera = theCamera; 
} 
theCamera.setPreviewDisplay(holder); 

if (!initialized) { 
    initialized = true; 
    configManager.initFromCameraParameters(theCamera); 
    if (requestedFramingRectWidth > 0 && requestedFramingRectHeight > 0) { 
     setManualFramingRect(requestedFramingRectWidth, 
       requestedFramingRectHeight); 
     requestedFramingRectWidth = 0; 
     requestedFramingRectHeight = 0; 
    } 
} 
configManager.setDesiredCameraParameters(theCamera); 
SharedPreferences prefs = PreferenceManager 
     .getDefaultSharedPreferences(context); 
reverseImage = prefs.getBoolean(PreferencesActivity.KEY_REVERSE_IMAGE, 
     false); 
} 

스캔 속도를 높이려면 어떻게해야합니까? 도움을 주셔서 감사합니다

내가 서핑을 할 때,이 Nimbledroid가 있습니다. NimbleDroid과 함께하는 것이 좋습니다.

+1

"Qrcode 39"란 무엇입니까? "코드 39"? 그것은 "QR 코드"가 아닙니다. "빠른"방법? 원래 바코드 스캐너는 어떻습니까? 앱에 라이브러리와 관련이없는 버그가있을 수 있습니다. zxing은 <10ms 내에 코드 39를 스캔합니다. –

+0

@Sean Owen, Google 검색에서 다운로드 한 원본 바코드 스캐너가 10 밀리 초 이내에 스캔하는 데 동의합니다. 후방 카메라를 사용할 경우에도 똑같은 일이 발생합니다. 그러나 전면 카메라의 경우 10 밀리 초 이내에 결과를 얻지 못합니다. matricom [태블릿] (http://matricom.net/products/g-tab-quantum-10-1-quad-core-tablet/)을 사용하고 있습니다. –

+1

전면 카메라는 제대로 스캔하지 않습니다. 또한 앱을 복사하여 붙여 넣지 마십시오. 그것은 허용되지 않습니다. https://github.com/zxing/zxing/wiki/License-Questions –

답변

-3

zxing 라이브러리의 모든 패키지를 추가하는 대신 응용 프로그램에서 zxing 프로젝트를 라이브러리로 추가 해보는 것이 좋습니다.

+0

thats 내가 한 일. 난 내 응용 프로그램에 내 라이브러리로 zxing 프로젝트를 추가했습니다. 나는 그 질문을 편집했다. –

-2

https://github.com/zxing/zxing 코어 폴더는 안드로이드를 다루기에 충분합니다. android-xxx 프로젝트를 사용할 필요가 없습니다.

코드를 더 빠르게 스캔하려면 ZBar 라이브러리 http://zbar.sourceforge.net/을 사용해야하지만 GPL 라이센스가 적용됩니다.

EDIT

int bitmapWidth = bitmap.getWidth(); 
int bitmapHeight = bitmap.getHeight(); 
int[] pixels = new int[bitmapWidth * bitmapHeight]; 

bitmap.getPixels(pixels, 0, bitmapWidth, 0, 0, bitmapWidth, bitmapHeight); 
bitmap.recycle(); 
RGBLuminanceSource source = new RGBLuminanceSource(bitmapWidth, bitmapHeight, pixels); 
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source)); 
Reader reader = new MultiFormatReader(); 

try { 
    return reader.decode(binaryBitmap).toString(); 
} catch (Exception e) { 
    // nothing happens - entry is just not available in this frame 
} 

return null; 

맵 카메라 영상에서 미리 작성된 Bitmap 개체이다. Here 카메라 미리보기를 설정하는 방법에 대한 설명이 있습니다. Camera 개체에서 비트 맵으로 변환해야하는 바이트를 제공하는 PreviewCallback을 설정해야합니다. Zxing에는 멋진 API가 있지만 Android 앱은 허풍 이니 바로 그게 전부입니다.

HTH

ps. google "zbar android"를 입력하십시오 - 첫 번째 링크에는 github에 공유 된 Android 용 API가 포함되어 있습니다 ...

+0

나는 안드로이드 zxing 프로젝트의 이름을 변경하고이를 내 응용 프로그램에서 사용했습니다. core.jar 파일을 어떻게 처리합니까? QR 코드를 스캔하기에 충분합니까? 그렇다면 어떻게 될 수 있습니까? 실용적인 예로 나를 안내해 주시겠습니까? zbar에는 android SDK가없는 것으로 보입니다. –

+0

편집 내 대답 – Gaskoin

+0

친절한 단어 @ Gaskoin 주셔서 감사하지만 zbar 안드로이드 애플 리케이션이 전혀없고, 문제는 OP가 말한대로 '스캔 속도'되지 않습니다. –