I finally found a solution. Code (created from here ):
import com.google.zxing.*; public static String scanQRImage(Bitmap bMap) { String contents = null; int[] intArray = new int[bMap.getWidth()*bMap.getHeight()]; //copy pixel data from the Bitmap into the 'intArray' array bMap.getPixels(intArray, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight()); LuminanceSource source = new RGBLuminanceSource(bMap.getWidth(), bMap.getHeight(), intArray); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Reader reader = new MultiFormatReader(); try { Result result = reader.decode(bitmap); contents = result.getText(); } catch (Exception e) { Log.e("QrTest", "Error decoding barcode", e); } return contents; }
Gradle, referencing as:
dependencies { compile 'com.google.zxing:core:3.2.1' }
Using:
InputStream is = new BufferedInputStream(new FileInputStream(file)); Bitmap bitmap = BitmapFactory.decodeStream(is); String decoded=scanQRImage(bitmap); Log.i("QrTest", "Decoded string="+decoded);
source share