Расшифровка QR-кода в приложении для Android?

В Android с помощью ZXing мы можем сканировать QR-код через камеру телефона и декодировать его.

Но в моем сценарии изображение QR-кода хранится в самом телефоне, и мне нужно его расшифровать.

Есть ли способ декодировать QR-изображение таким образом?


person Veera    schedule 02.03.2011    source источник
comment
Могу ли я предложить поиск Google? Я почти уверен, что есть библиотеки.   -  person Seva Alekseyev    schedule 02.03.2011
comment
есть библиотеки для сканирования QR-кода через камеру. но мое требование немного отличается.   -  person Veera    schedule 02.03.2011
comment
Вира, вы можете использовать код ZXing, чтобы сделать это из растровых изображений, а не из камеры, как я ответил.   -  person Matthew Willis    schedule 02.03.2011


Ответы (2)


Для этого вы можете использовать код ZXing.

Ознакомьтесь с DecodeHandler.java.

person Matthew Willis    schedule 02.03.2011
comment
CaptureActivity захватывает изображение QR-кода с камеры и после его декодирования показывает результаты в соответствии с типом данных, хранящихся в QR-коде. например если URL-адрес веб-сайта закодирован в QR-коде, на экране результатов будет кнопка для открытия этого URL-адреса и т.п. Мне нужно прочитать изображение с SD-карты, декодировать его и обработать вывод так же, как это делает zxing в случае декодирования через CaptureActivity. Что мне нужно сделать после получения вывода в результате? - person Kulin Choksi; 28.03.2012

Вы можете просто использовать Mobile Vision API для декодирования QR-кода из изображения. Он очень точен и может обнаруживать более одного Qr-кода на изображении.

Вы должны включить следующую библиотеку, чтобы использовать Mobile Vision API:

скомпилировать 'com.google.android.gms:play-services-vision:9.6.1'

BarcodeDetector detector =
                new BarcodeDetector.Builder(context)
                        .setBarcodeFormats(Barcode.DATA_MATRIX | Barcode.QR_CODE)
                        .build();
        if(!detector.isOperational()){
            Log.d("QR_READ","Could not set up the detector!");
        }
        Frame frame = new Frame.Builder().setBitmap(bitmap).build();
        SparseArray<Barcode> barcodes = detector.detect(frame);
            Log.d("QR_READ","-barcodeLength-"+barcodes.size());
            Barcode thisCode=null;
            if(barcodes.size()==0){
                Log.d("QR_VALUE","--NODATA");
            }
            else if(barcodes.size()==1){
                thisCode = barcodes.valueAt(0);
                Log.d("QR_VALUE","--"+thisCode.rawValue);
            }
            else{
                for(int iter=0;iter<barcodes.size();iter++) {
                    thisCode = barcodes.valueAt(iter);
                    Log.d("QR_VALUE","--"+thisCode.rawValue);
                }
            }
person VivekTamilarasan    schedule 11.11.2016