마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

zxing으로 QR코드 기능 구현 해보신분 ㅜㅜ

0 추천

QR코드 리더 기능이 필요해서 zxing 라이브러리 사용해서 만들고 있습니다.

ㅜㅜ 근데 QR코드 하나씩 읽는거는 뭐 샘플코드에도 잘 나와 있고 해서 문제없이 되는데,,

다수의 QR코드를 한번에 읽어야 하는데.. 이걸 모르겠습니다 ㅜㅜ

zxing API 찾아보면 QRCodeMultiReader 라는걸 사용해라고 하는거 같은데..

샘플코드에도 QRCodeMultiReader를 쓰는 부분이 없고, 다른 설명도 전무합니다 ㅜㅜ

stackoverflow에도 자료 찾아봤는데,, 같은 질문 한 사람은 많은데 대답이 전부

제대로 된게 없드라구요 ㅜ 혹시 나 해서 안펍에서 zxing 사용해 보신분 지식좀 나눠 주세요..

 

일단 아래 코드로 해서 돌려 봤는데,, 여러개 한번에 읽으면 Results 에 아무것도 안읽히고

하나 읽으면 같은 값이 반복되서 출력됩니다... 

QRCodeMultiReader reader = new QRCodeMultiReader();

Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
hints.put(DecodeHintType.TRY_HARDER, BarcodeFormat.QR_CODE);
Result[] results = reader.decodeMultiple(bitmap, hints);

String text = "";

for (Result r : results) {
   System.out.println(r.getText());
   text += r.getText();
}

 

익명사용자 님이 2014년 10월 23일 질문

1개의 답변

0 추천
 
채택된 답변

테스트해봤는데 잘 되네요 

전 4개까지 해봤습니다

소스 첨부합니다

 

camera.takePicture(null, null, new Camera.PictureCallback() {

            @Override
            public void onPictureTaken(byte[] data, Camera c) {
                try {
                    Bitmap pic = BitmapFactory.decodeByteArray(data, 0,
                            data.length);

                    int[] intArray = new int[pic.getWidth()*pic.getHeight()];

                    pic.getPixels(intArray, 0, pic.getWidth(), 0, 0, pic.getWidth(), pic.getHeight());

                    LuminanceSource source = new RGBLuminanceSource(pic.getWidth(), pic.getHeight(),intArray);

                    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

                    QRCodeMultiReader reader = new QRCodeMultiReader();
                    Result[] results = reader.decodeMultiple(bitmap);
                    for(Result r : results){
                        System.out.println(r.getText());
                    }

                } catch (Exception e) {

                }
            }
        });

 

alkyne (22,960 포인트) 님이 2014년 10월 23일 답변
답변 감사합니다.. 저는 카메라로 takePicture 안하구
preview화면을 바로 PlanarYUVLuminanceSource 로 짤라서 썻었는데..
왜 안됬을까요.. takePicture 해도 인식률이 좀 나쁘긴 한데,, 포커스랑 사진크기
때문 인 것 같네요.. 한번 살펴보겠습니다. 감사합니다.
...