The Mobile Vision API is now a part of ML Kit. We strongly encourage you to try it out, as it comes with new capabilities like on-device image labeling! Also, note that we ultimately plan to wind down the Mobile Vision API, with all new on-device ML capabilities released via ML Kit. Feel free to reach out to Firebase support for help.

Release Notes

Here are the updates to the Mobile Vision API corresponding to the Google Play Services releases.

Google Play Services 10.9

Bug Fixes

  • Fixed the bug that causes text API to crash.

Google Play Services 10.7

Improvements

  • Updated Text API model to have better detection and recognition accuracy.

Known Issues

  • Text API crashes on some Samsung arm64 devices. This will be fixed in the next release.

Google Play Services 10.0

Improvements

Barcode API

  • Detect mirrored QR codes automatically and decode them (GitHub #66).
  • Return FNC1 characters for Code 128 barcodes (GitHub #85).
  • Lowered minimum barcode length for Code 39/93/128 (GitHub #12).
  • Make AAMVA DL/ID parser more lenient (GitHub #77).
  • Reduce threshold for required trailing whitespace for Codabar/Code 39 (GitHub #131).
  • Improved (slightly) AZTEC candidate and Codabar start character filtering.

Google Play Services 9.2

Bug Fixes

  • Mobile Vision operation is restored in Google Play Services v9.2. Users with the new version will be able to download the required files and make use of application features powered by Mobile Vision. The Google Play Services update also includes a configuration update as part of the fix for Mobile Vision. Normally this is updated once every several days, but it will also occur on phone reboot (though this it is throttled, so this is not guaranteed to update the configuration). Since file download errors can still occur (e.g. if there is insufficient storage on the device), we advise Google Play Services developers to call FaceDetector.isOperational() or BarcodeDetector.isOperational() to check for detector readiness and degrade feature operation accordingly.

Improvements

  • Added Text API: Optical character recognition for Latin character text (English, Spanish, German, French, etc.) in photos. Text API returns the organizational structure of the text (paragraphs, lines, words) as well as the text itself.
  • Added a sample application for Text API.

Google Play Services 9.0

Known Issues

  • A service required by Mobile Vision is now disabled due to a serious bug in that service. This will prevent users who have not already used face or barcode detection from using those features. We do not recommend adding new Mobile Vision features to your app until this issue is fixed.
  • For apps that already use Mobile Vision features, check FaceDetector.isOperational() or BarcodeDetector.isOperational() to confirm detector readiness before using the face or barcode detector.

Google Play Services 8.4

Improvements

  • Required Files Download: Improved the success rate for required file downloads by decreasing the amount of free space required for downloads to start. Previously, we would require at least 10% free disk space. We now require the minimum of 10% or 500Mb, whichever is less. Note that this mirrors when ACTION_DEVICE_STORAGE_LOW fires by default.
  • BarcodeDetector - Aztec: Adds support for Aztec barcode detection and decoding to the Barcode Detector.
  • FaceDetector: Adds minimum face size setting to the Face Detector.

Bug Fixes

  • Barcodes - Codabar: Codabar start/stop characters are now returned in rawValue (but not displayValue).
  • FaceDetector.detect(): Fixed a defect that caused a crash in the native face detection code for images with width < 147 and images with height / width > 4.383.
  • CameraSource: Fixed memory leak. Fixed issue selecting correct picture resolution.

Google Play Services 8.3

Improvements

  • Barcodes - PD417: Improved decoding of PDF417 codes used on driver's licenses.
  • CameraSource.Builder: Added autofocus option.
  • MultiProcessor: Added an onMissing notification to indicate that a tracked item is temporarily missing. This allows the tracker to take action during the time when the object isn't visible. For example, it can remove the associated graphic from the screen.
  • Tracker.onDone(): Removed delay in calling onDone when using the FocusingProcessor.

Google Play Services 8.1

Known Issues

  • FaceDetector.detect(): Images with a width smaller than 147 pixels and images with a height/width ratio greater than 4.383 can cause a crash in the native face detection code. There is a workaround in the photo-demo sample app (see the SafeFaceDetector class).

  • BarcodeDetector.detect(): Due to a bug, users who have already downloaded a barcode app when using Google Play Services 7.8 may experience the following exception when 8.1 installs on their device. We recommend recompiling your app to use Google Play Services 8.1, which will fix the issue once the affected users receive the update to your app. Example exception:

    java.lang.UnsatisfiedLinkError: No implementation found for com.google.android.gms.vision.barcode.internal.NativeBarcode[] com.google.android.gms.vision.barcode.internal.NativeBarcodeDetector.recognizeBufferNative(int, int, java.nio.ByteBuffer, com.google.android.gms.vision.barcode.internal.NativeOptions)
    

Bug Fixes

Google Play Services 7.8 - Known Issues

This was the first release of the Mobile Vision API.

Vision API

These are issues that apply to all of the APIs (Faces and Barcodes).

  • MultiProcessor, maxGapFrames parameter: If multiprocessor maxGapFrames is set to 0, then trackers are never finalized. This can lead to "ghost" items for tracked objects that used to exist but are no longer present. Workaround: Do not set maxGapFrames 0. The defect is not present with the default value for the parameter.

  • MultiProcessor (enhancement): Add notification for the onMissing event to the associated trackers. For intermediate frames in which a tracked item is not detected, this notifies the tracker that the item is currently not detected. User code can take the appropriate steps to better handle this situation (e.g., an app which displays a graphic overlay over detected items can hide those graphics during the brief periods that the item is not detected).

Face API

  • Face.getPosition(), Face.getLandmarks(): The x coordinates are shifted to the left by a few pixels. The effect is more noticeable for smaller images. The shift will be corrected in a future release.