MVBarcodeReader

Download Android Arsenal

A Barcode scanning library for Android. Uses the Google Play Services' mobile vision api for barcode detection.

Setup

Maven

<dependency>
  <groupId>online.devliving</groupId>
  <artifactId>mvbarcodereader</artifactId>
  <version>LATEST_VERSION</version>
  <type>pom</type>
</dependency>

Gradle

compile 'online.devliving:mvbarcodereader:LATEST_VERSION'

Add following dependencies to your app's gradle file

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.google.android.gms:play-services-basement:11.0.1'
compile 'com.google.android.gms:play-services-vision:11.0.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:support-annotations:25.3.1'

Usage

Scanning Modes

Barcode Types

You can view this link for a list of supported barcode formats.

Use the standalone scanner

launch the scanner from your Activity like this:

new MVBarcodeScanner.Builder()
                    .setScanningMode(mMode)
                    .setFormats(mFormats)
                    .build()
                    .launchScanner(this, REQ_CODE);

You'll receive the scanned barcode/barcodes in your Activity's onActivityResult

if (requestCode == REQ_CODE) {
            if (resultCode == RESULT_OK && data != null
                    && data.getExtras() != null) {

                if (data.getExtras().containsKey(MVBarcodeScanner.BarcodeObject)) {
                    Barcode mBarcode = data.getParcelableExtra(MVBarcodeScanner.BarcodeObject);
                } else if (data.getExtras().containsKey(MVBarcodeScanner.BarcodeObjects)) {
                    List<Barcode> mBarcodes = data.getParcelableArrayListExtra(MVBarcodeScanner.BarcodeObjects);
                }
            }
        }

Use the scanner fragment

You can use the BarcodeCaptureFragment to scan barcodes. Just add the fragment to your Activity

MVBarcodeScanner.ScanningMode mode = null;
@MVBarcodeScanner.BarCodeFormat int[] formats = null;

BarcodeCaptureFragment fragment = BarcodeCaptureFragment.instantiate(mode, formats);
getSupportFragmentManager().beginTransaction()
                .add(R.id.container, fragment)
                .commit();

Then make the the Activity implement the BarcodeCaptureFragment.BarcodeScanningListener so that you can receive results from the fragment or you can set the listener directly to the fragment

        fragment.setListener(new BarcodeCaptureFragment.BarcodeScanningListener() {
            @Override
            public void onBarcodeScanned(Barcode barcode) {

            }

            @Override
            public void onBarcodesScanned(List<Barcode> barcodes) {

            }

            @Override
            public void onBarcodeScanningFailed(String reason) {

            }
        });