status of

Mobile Barcode Scanning API

by Pietro F. Maggi / @pfmaggi

What's up with Barcode API?

Google released a Barcode API in GMS v7.8 this summer.

Joining Apple that intruduced a similar support in iOS 7.

...we've now an official API for the two major mobile OS.

Google MobileVision

How we arrived here?

From Custom OS on custom HW with Custom APIs.

Symbol PDT3100

How we arrived here?

To Enterprise OS with Custom API to control custom capabilities

Motorola MC3100

How we arrived here?

Reaching today Consumer OS with, again, Custom API for the custom accessories

Zebra MC3200

...Not a lot changed for mobile Enterprise developers over the last 30 years!


How did we used these APIs?

Most of these APIs started with a synchronous design.

Switching lately to a more asynchronous friendly design.

Adding sometimes "Document Capture" capabilities.

What's available today in a mobile OS?

iOS and Android include API built around a Media Pipeline

What's available today in a mobile OS?

Android (GMS) Mobile Vision API
BarcodeTracker & BarcodeDetector

Google Mobile Vision Barcode API

What's available today in a mobile OS?

iOS AV Foundation API
AVCaptureMetadataOutput

Apple AV Foundation API

A complete new way!

Bringing a video stream in the solution open a complete new set of possibilities

One single API to rule them all?

“The power to question is the basis of all human progress.”
Indira Gandhi

Not Really!

1.Simple Scan-a-barcode API

...still missing an official Android API.
Closest thing is ZXing Intent:



public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
       Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    }
};

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}
					

2.High-Volumes barcode API

A lot of third party options.

Mostly linked to custom HW:
[Zebra|Intermec|Honeywell|BlueBird|...] Android SDK

Some linked to consumer devices and camera:
[Scandit|RedLaser] crossplatform SDK

3.Media Pipeline API

Enablers for new kind of applications

  • Augmented reality
  • Reading multiple barcodes
  • Document Capture APIs (barcode plus something)
  • Indentify phisical objects
  • ...

So...

Reading barcodes is only one of the possible and interesting scenario supported by these new generation of API.

Opening interesting use cases even for old timers in the industry.

But they're not a silver bullet for all the use cases.

Questions?

Questions?

Thank you

Images from:

Deck built with Reveal.js