tag:github.com,2008:https://github.com/blinkinput/blinkinput-android/releases Release notes from blinkinput-android 2021-04-02T07:18:55Z tag:github.com,2008:Repository/34118079/v5.0.0 2021-04-02T07:20:33Z v5.0.0 <h2>v5.0.0</h2> <h3><strong>BlinkInput v5 Release Announcement</strong></h3> <p>As of this version, BlinkInput SDK is fully compatible with other Microblink SDKs, which means that you can use it alongside another Microblink SDK in the same application.</p> <h3>Improvements:</h3> <ul> <li>We've translated the complete SDK to the following additional languages: <strong>Malay</strong>, <strong>Dutch</strong>, <strong>Hungarian</strong>, <strong>Serbian</strong>, <strong>Slovenian</strong>, <strong>Indonesian</strong>, <strong>Arabic</strong>, <strong>Romanian</strong>, <strong>Chinese traditional</strong>, <strong>Chinese simplified</strong>, <strong>Thai</strong>, <strong>Hebrew</strong>, <strong>Vietnamese</strong> and <strong>Filipino</strong>.</li> <li>We've made the SDK safe from <strong>tapjacking</strong>, a form of attack where a user is tricked into tapping something he or she didn't intend to tap. We did this by adding a new security option that prompts the SDK to discard touches when the activity's window is obscured by another visible window. To activate it, use <code>UISettings.setFilterTouchesWhenObscured(true)</code>.</li> <li>We've introduced a new <code>FrameRecognitionCallback</code> callback for the <code>RecognizerRunnerView</code>, which is invoked each time a camera frame from a video stream is recognized. Use <code>RecognizerRunnerView.setFrameRecognitionCallback</code> method to set the callback.</li> </ul> <h3>Major API changes</h3> <ul> <li>To ensure compatibility with other Microblink SDKs, we have repackaged all classes. We’ve renamed the root package <code>com.microblink</code> to <code>com.microblink.blinkinput</code>, which is unique to <code>BlinkInput</code> SDK.</li> <li><code>ScanResultListener</code> interface now has an additional method called when the scanning cannot continue because of an unrecoverable error. You have to implement <code>onUnrecoverableError</code> method.<br> If you're using built-in activities, when <code>onActivityResult</code> is called with <code>RESULT_CANCELED</code> result code, the exception will be available via <code>ActivityRunner.EXTRA_SCAN_EXCEPTION</code> intent extra. If the user canceled the scan, the exception would be <code>null</code>.</li> </ul> <h3>Minor API changes:</h3> <ul> <li>We renamed <code>EMailParser</code> to <code>EmailParser</code>.</li> <li>We renamed some methods: <ul> <li>In <code>LicensePlatesParser</code>: <code>getLicensePlateString</code> is now called <code>getLicensePlate</code>.</li> <li>In <code>RegexParser</code>: <code>isUsingSieve</code> is now called <code>shouldUseSieve</code>, <code>setMustStartWithWhitespace </code> is now called <code>setStartWithWhitespace </code>, <code>isMustStartWithWhitespace </code> is now called <code>shouldStartWithWhitespace </code>, <code>setMustEndWithWhitespace </code> is now called <code>setEndWithWhitespace </code>, and <code>isMustEndWithWhitespace </code> is now called <code>shouldEndWithWhitespace </code>.</li> <li>In <code>RawParser</code>: <code>isUsingSieve</code> is now called <code>shouldUseSieve</code>.</li> </ul> </li> <li>We've renamed <code>RecogitionMode</code> to <code>RecognitionDebugMode</code> in <code>RecognizerBundle</code>.</li> <li>We've replaced <code>Using time-limited license!</code> warning with <code>Using trial license!</code> warning. The warning message is displayed when using a trial license key.</li> <li>We've deprecated <code>DetectorRecognizer</code>— use <code>DocumentCaptureRecognizer</code>instead.</li> <li>We've deprecated <code>Pdf417Recognizer</code> — use <code>BarcodeRecognizer</code> instead.</li> </ul> <h3>Bug fixes:</h3> <ul> <li>We've fixed a bug in IBAN parsing which occasionally read the reference number as part of the IBAN.</li> <li>We've fixed the front-facing camera error on <code>Oukitel WP8 Pro</code>.</li> </ul> i1E tag:github.com,2008:Repository/34118079/v4.3.0 2020-05-27T11:17:06Z v4.3.0 <h3>Breaking change:</h3> <p>Based on the feedback, we have restored support for <strong>x86_64</strong> processor architecture. Due to the architecture specifics, there is no guarantee that the scanning process will work equally well as it does on the ARM architectures. The main reason for restoring support is to ease the compliance issue for developers.<br> We distribute SDK with <strong>ARMv7</strong>, <strong>ARM64</strong>, <strong>x86</strong>, and <strong>x86_64</strong> native library binaries.</p> <h3>Improvements:</h3> <ul> <li>We have translated complete SDK to following languages: <strong>Croatian</strong>, <strong>Czech</strong>, <strong>English</strong>, <strong>French</strong>, <strong>German</strong>, <strong>Italian</strong>, <strong>Portuguese</strong>, <strong>Slovak</strong>, and <strong>Spanish</strong>.</li> <li>We improved document detection with <code>DocumentCaptureRecognizer</code>.</li> <li>We are now delivering the complete list of open source dependencies used in the SDK. Please check the <code>open-source-software-used</code> directory.</li> </ul> <h3>Minor API changes:</h3> <ul> <li>We removed <code>RecognizerRunnerView</code> custom attributes: <code>mb_initialOrientation</code> and <code>mb_aspectMode</code>. Use <code>RecognizerRunnerView.setInitialOrientation</code> and <code>RecognizerRunnerView.setAspectMode</code> to configure the attributes in the code.</li> <li>We renamed <code>EMailParser</code> to <code>EmailParser</code></li> <li>We renamed some methods: <ul> <li><code>LicensePlatesParser</code>: <code>getLicensePlateString</code> to <code>getLicensePlate</code></li> <li><code>RegexParser</code>: <code>isUsingSieve</code> to <code>shouldUseSieve</code>, <code>setMustStartWithWhitespace </code> to <code>setStartWithWhitespace </code>, <code>isMustStartWithWhitespace </code> to <code>shouldStartWithWhitespace </code>, <code>setMustEndWithWhitespace </code> to <code>setEndWithWhitespace </code>, <code>isMustEndWithWhitespace </code> to <code>shouldEndWithWhitespace </code></li> <li><code>RawParser</code>: <code>isUsingSieve</code> to <code>shouldUseSieve</code></li> </ul> </li> </ul> matvidako tag:github.com,2008:Repository/34118079/v4.2.0 2020-03-27T08:34:03Z v4.2.0 <h3>Breaking changes:</h3> <ul> <li>We decided to remove support for <strong>x86_64</strong> processor architecture.<br> <strong>x86</strong> and <strong>x86_64</strong> architectures are used on very few devices today; most of them are manufactured before 2015, and they take about 1% of all Android devices, according to the device catalog on Google Play Console.<br> We distribute SDK with <strong>ARMv7</strong>, <strong>ARM64</strong>, and <strong>x86</strong> native library binaries. Native library x86 in SDK is kept mainly for emulator support.</li> <li>We migrated the SDK to <strong>AndroidX</strong> dependencies. We replaced previous SDK dependency com.android.support:appcompat-v7 with <strong>androidx.appcompat:appcompat</strong>.</li> </ul> <h3>New features:</h3> <ul> <li>We added the option to disable Microblink logs in the console output. Use <code>LoggingSettings.disableMicroblinkLogging()</code>, but be careful with this option. We need full log outputs from the application for support purposes. In case of having problems with scanning certain items, undesired behavior on the specific device(s), crashes inside the SDK, or anything unmentioned, we will need a full log from your side. If you disable Microblink logs, you won't be able to provide us this information. Hence support might be limited.</li> <li>We added support for capturing images of various documents (A4, or some other format): <ul> <li>Use <code>DocumentCaptureRecognizer</code> and <code>DocumentCaptureUISettings</code>.</li> <li><code>DocumentCaptureUISettings</code> launches activity that uses <code>DocumentCaptureOverlayController</code>, which is designed for taking cropped <strong>high resolution</strong> document images and guides the user through the document capturing process. The overlay can be used only with <code>DocumentCaptureRecognizer</code>.</li> </ul> </li> <li>It’s possible to set the theme of the provided scan activity, launched from the UISettings, by using UISettings.setActivityTheme</li> </ul> <h3>Improvements:</h3> <ul> <li>We improved <code>VinParser</code>: <ul> <li>We added support for Renewal Identification Number (RIN) - DMV California format.</li> </ul> </li> <li>We improved camera performance on some Samsung devices.</li> </ul> <h3>Minor API changes:</h3> <ul> <li>We removed <code>RecognizerRunnerView</code> custom attributes: <code>mb_initialOrientation</code> and <code>mb_aspectMode</code>. Use <code>RecognizerRunnerView.setInitialOrientation</code> and <code>RecognizerRunnerView.setAspectMode</code> to configure the attributes in the code.</li> <li><code>RecognizerRunnerFragment</code> extends <code>androidx.fragment.app.Fragment</code>, instead of the deprecated <code>android.app.Fragment</code>.</li> <li>All provided scan activities extend <code>AppCompatActivity</code> and they are <code>final</code>.</li> <li><code>RecognizerRunner.getSingletonInstance()</code> does not throw <code>FeatureNotSupportedException</code> anymore.</li> <li>We added a new API for configuring camera options in <code>UISettings</code>. Use <code>UISettings.setCameraSettings</code>, which accepts an object of <code>CameraSettings</code> type.</li> <li><code>FieldByFieldOverlayController</code> is now configured by using <code>FieldByFieldOverlaySettings</code> instead of <code>FieldByFieldUISettings</code>.</li> <li><code>Recognizer</code> now only has one type parameter.</li> <li><code>Recognizer.Result</code> no longer has any type parameters.</li> <li>We moved some classes to new packages.</li> </ul> <h3>Bugs that we fixed:</h3> <ul> <li>Crash when using Direct API on high resolution <code>com.microblink.image.Image</code> from <code>HighResImageWrapper</code>.</li> <li>Problems with aspect ratio of camera preview on Huawei Mate 10.</li> <li>Crash on some devices that use armeabi-v7a ABI. The SDK was unable to reserve address space due to memory fragmentation.</li> <li>Camera busy error in camera management that was happening during the quick closing and opening of the camera.</li> <li>Rare crash on Samsung J5 Prime which has been caused by race condition during the initialization of the native camera frame.</li> <li>All default scan activities correctly set volume to media instead of the ring.</li> <li>All default scan activities now apply a secure flag if enabled in <code>UISettings</code>.</li> <li>Scanning bug on devices with problematic camera resolution, which caused that the SDK was unable to scan the data. Known affected devices were: <code>OnePlus 6T</code>, <code>OnePlus 7 Pro</code>, and <code>Vivo V15</code>.</li> </ul> i1E tag:github.com,2008:Repository/34118079/v4.1.0 2019-05-17T10:06:37Z v4.1.0 <h3>New features:</h3> <ul> <li>enabled capturing of high resolution camera frames: <ul> <li>When custom UI integration is performed, enable this functionality by using method <code>RecognizerRunnerView.setHighResFrameCaptureEnabled</code> and use <code>RecognizerRunnerView.captureHighResImage</code> to capture image</li> <li>When using provided scan activities, high resolution full camera frames taken at the moment of successful scan are returned if this option is enabled through <code>UISettings</code>. Concrete <code>UISettings</code> which implement interface <code>HighResSuccessFrameCaptureUIOptions</code> support this feature.</li> </ul> </li> </ul> <h3>Improvements for existing features:</h3> <ul> <li>added option to force overlay orientation for <code>BarcodeOverlayController</code> (<code>BarcodeScanActivity</code>) - use <code>BarcodeUISettings.setForcedOrientation(OverlayOrientation)</code></li> <li><code>RecognizerRunnerView</code> is lifecycle-aware now, it implements <code>android.arch.lifecycle.LifecycleObserver</code> interface</li> <li>improved image return processor: <ul> <li>the processor now estimates detected (dewarped) document image quality and returns the best quality dewarped image from the best quality detection</li> </ul> </li> <li><code>BarcodeScanActivity</code> by default does not show result dialog after scan</li> <li>updated default UI icons</li> </ul> <h3>Minor API changes:</h3> <ul> <li>Scanning timeout that can be configured by using <code>RecognizerBundle.setNumMsBeforeTimeout</code> is by default set to <code>RecognizerBundle.TIMEOUT_INFINITY</code>, which means that timeout is disabled by default. Previous default timeout value was 10 seconds.</li> <li>renamded enum <code>com.microblink.uisettings.options.ShowOcrResultMode</code> to <code>com.microblink.uisettings.options.OcrResultDisplayMode</code></li> <li>for all <code>UISettings</code> classes which support setting of OCR result display mode, renamed method <code>setShowOcrResultMode</code> to <code>setOcrResultDisplayMode</code></li> </ul> <h3>Bug fixes:</h3> <ul> <li>fixed crashes on Nexus 6</li> <li>removed incorrect autofocus check that was performed before concrete camera type is chosen</li> <li>fixed crash on some devices when using <code>VIDEO_RESOLUTION_MAX_AVAILABLE</code></li> <li>fixed problems in camera management: <ul> <li>default camera surface is <code>TextureVeiw</code> for devices that use Camera1 API, otherwise <code>SurfaceView</code> is used</li> </ul> </li> <li>fixed camera autofocus problems on Samsung S9/S9+ when optimisation for near scanning is enabled</li> <li>fixed autofocus problems in <code>Field by field</code> scanning on Huawei P20 pro, Huawei P20 and Huawei P20 lite</li> <li>fixed bug which caused that results from the previous scan are cleared when the scan activity is run again and entities which have produced results are not used in the new scan</li> <li>various other bug fixes and improvements</li> </ul> i1E tag:github.com,2008:Repository/34118079/v4.0.0 2018-05-16T18:03:31Z v4.0.0 <ul> <li>new API, which is not backward compatible. Please check <a href="/blinkinput/blinkinput-android/blob/v4.0.0/README.md">README</a> and updated demo applications for more information, but the gist of it is: <ul> <li><code>RecognizerView</code> has been renamed to <code>RecognizerRunnerView</code> and <code>Recognizer</code> singleton to <code>RecognizerRunner</code></li> <li><code>SegmentScanActivity</code> has been renamed to <code>FieldByFieldScanActivity</code></li> <li><code>RandomScanActivity</code> does not exist anymore</li> <li>previously internal <code>Recognizer</code> objects are not internal anymore - instead of having opaque <code>RecognizerSettings</code> and <code>RecognizerResult</code> objects, you now have stateful <code>Recognizer</code> object that contains its <code>Result</code> within and mutates it while performing recognition. <ul> <li>similarly we now have stateful <code>Parser</code> and <code>Detector</code> objects</li> <li>introduced new <code>Processor</code> object type</li> <li>For more information, see <a href="/blinkinput/blinkinput-android/blob/v4.0.0/README.md">README</a>, updated demo applications and <a href="https://microblink.com/blog/major-change-of-the-api-and-in-the-license-key-formats" rel="nofollow">this blog post</a></li> </ul> </li> <li>added <code>RecognizerRunnerFragment</code> with support for various scanning overlays in a manner similar to iOS API. This now allows you to use built-in UI, which was previously strictly available for built-in activities, in form of fragment anywhere within your activity. Full details are given in <a href="/blinkinput/blinkinput-android/blob/v4.0.0/README.md">README</a> and in updated demo applications.</li> </ul> </li> <li>new licence format, which is not backward compatible. Full details are given in <a href="/blinkinput/blinkinput-android/blob/v4.0.0/README.md">README</a> and in updated applications, but the gist of it is: <ul> <li>licence can now be provided with either file, byte array or base64-encoded bytes</li> </ul> </li> <li>introduced preview version of next generation <code>DeepOCR</code>. Check <em>BlinkInputRawOcrSample</em> to see how it can be enabled.</li> </ul> DoDoENT tag:github.com,2008:Repository/34118079/v3.4.0 2017-09-22T09:22:07Z v3.4.0 <h3>New features:</h3> <ul> <li>Added <code>VinRecognizer</code> for scanning VIN (<em>Vehicle Identification Number</em>) barcodes</li> <li>Added unified <code>BarcodeRecognizer</code> for scanning various tipes of barcodes <ul> <li><code>ZXingRecognizer</code> and <code>BarDecoderRecognizer</code> are <strong>deprecated</strong>, <code>BarcodeRecognizer</code> should be used for all barcode types that are supported by these recognizers</li> </ul> </li> <li>added support for reading mirrored QR codes: <ul> <li>affects all recognizers that perform QR code scanning</li> </ul> </li> <li>introduced <code>GlareDetector</code> which is by default used in all recognizers whose settings implement <code>GlareDetectorOptions</code>: <ul> <li>when glare is detected, OCR will not be performed on the affected document position to prevent errors in the extracted data</li> <li>if the glare detector is used and obtaining of glare metadata is enabled in <code>MetadataSettings</code>, glare status will be reported to <code>MetadataListener</code></li> <li>glare detector can be disabled by using <code>setDetectGlare(boolean)</code> method on the recognizer settings</li> </ul> </li> <li>added <code>QuadDetectorWithSizeResult</code> which inherits existing <code>QuadDetectorResult</code>: <ul> <li>it's subclasses are <code>DocumentDetectorResult</code> and <code>MRTDDetectorResult</code></li> <li>returns information about physical size (height) in inches of the detected location when physical size is known</li> </ul> </li> <li>added support for characters <code>{</code> and <code>}</code> in <code>OCR_FONT_VERDANA</code> to OCR engine</li> </ul> <h3>Minor API changes:</h3> <ul> <li>Date fields in recognition results are returned as <code>com.microblink.results.date.Date</code> class which represents immutable dates that are consisted of day, month and year</li> <li><code>OcrLine.getChars()</code> method returns <code>CharWithVariants</code> array. OCR char is defined by all its parameters (value, font, position, quality, etc.) and for each resulting char it is possible to have multiple variants. For example it is possible to have same char value with different font.</li> <li><code>RegexParserSettings</code> and <code>RawParserSettings</code> now work with <code>AbstractOCREngineOptions</code>, which is a base class of <code>BlinkOCREngineOptions</code> <ul> <li>default engine options returned by method <code>getOcrEngineOptions</code> for both parser settings return instance of <code>BlinkOCREngineOptions</code></li> </ul> </li> <li><code>BlinkOCRRecognizerSettings</code> is now deprecated and will be removed in <code>v4.0.0</code> <ul> <li>use <code>DetectorRecognizerSettings</code> to perform scanning of templated documents</li> <li>use <code>BlinkInputRecognizerSettings</code> for segment scan or for full-screen OCR</li> <li>until <code>v4.0.0</code>, <code>BlinkOCRRecognizerSettings</code> will behave as before, however you are encouraged to update your code not to use it anymore</li> </ul> </li> <li><code>DocumentClassifier</code> interface is moved from <code>com.microblink.recognizers.blinkocr</code> to <code>com.microblink.recognizers.detector</code> package and <code>DocumentClassifier.classifyDocument()</code> now accepts <code>DetectorRecognitionResult</code> as parameter for document classification</li> </ul> <h3>Improvements for existing features:</h3> <ul> <li>improved <code>TopUpParser</code>: <ul> <li>added option to return USSD code without prefix</li> </ul> </li> <li>improved <code>IbanParser</code>: <ul> <li>improved extraction of IBANs without prefix and introduced <code>setAlwaysReturnPrefix</code> option to always return prefix (country code)</li> <li>added support for french IBANs</li> </ul> </li> <li>enabled reading of Pdf417 barcodes having width/height bar aspect ratio less than 2:1</li> <li>improved date parsing: <ul> <li>affects date parser and all recognizers which perform date parsing</li> </ul> </li> </ul> <h3>Bug fixes:</h3> <ul> <li>fixed returning of images inside TemplatingAPI for frames when document was not correctly detected</li> <li>Fixed bug in SegmentScanActivity: <ul> <li>scan results are no longer hidden on shake event</li> </ul> </li> </ul> i1E tag:github.com,2008:Repository/34118079/v3.3.0 2017-05-23T13:04:17Z v3.3.0 <ul> <li>optimised native binary size <ul> <li>33% size reduction for <code>arm64-v8a</code> ABI</li> <li>39% size reduction for <code>armeabi-v7a</code> ABI</li> <li>34% size reduction for <code>x86</code> ABI</li> <li>31% size reduction for <code>x86_64</code> ABI</li> </ul> </li> <li><code>LibBlinkInput</code> is now fully ProGuard-compatible, i.e. you no longer need to exclude <code>com.microblink.**</code> classes in your ProGuard configuration</li> <li>removed support for Android 2.3 and Android 4.0 - minimum required Android version is now Android 4.1 (API level 16) <ul> <li>devices with Android 4.0 and earlier take <a href="https://developer.android.com/about/dashboards/index.html#Platform" rel="nofollow">less than 2% of market share</a> and is very costly to support them</li> </ul> </li> <li>removed <code>isItalic</code> and <code>isBold</code> getters from <code>OcrChar</code> class <ul> <li>they always returned <code>false</code>, since OCR engine cannot accurately detect that</li> </ul> </li> <li>removed <code>setLineGroupingEnabled</code> and <code>isLineGroupingEnabled</code> from <code>BlinkOCREngineOptions</code> because disabling line grouping completely destroyed the OCR accuracy</li> <li>improved <code>TopUpParser</code>: <ul> <li>added option to enable all prefixes at the same time (generic prefix)</li> <li>added suport for 14 digits long sim numbers in addition to existing lengths (12, 19, 20)</li> </ul> </li> <li><code>DateParser</code> can parse dates with month names in English (either full or abbreviated), if this option is enabled</li> <li>added support for polish IBAN without PL prefix to <code>IBANParser</code></li> <li>prefixed custom attributes to avoid name collisions with attributes from other libraries: <ul> <li><code>CameraViewGroup</code>: renamed animateRotation to <code>mb_animateRotation</code>, animationDuration to <code>mb_animationDuration</code>, rotatable to <code>mb_rotatable</code></li> <li><code>BaseCameraView</code>: renamed initialOrientation to <code>mb_initialOrientation</code>, aspectMode to <code>mb_aspectMode</code></li> </ul> </li> </ul> i1E tag:github.com,2008:Repository/34118079/v3.2.0 2017-01-31T14:04:18Z v3.2.0 <ul> <li>added support for Android 7 multi-window mode</li> <li>fixed autofocus bug on Huawei Honor 8</li> <li>fixed black camera on Motorola Moto Z</li> <li>made camera focusing more stable on some devices <ul> <li><em>stable</em> means less "jumpy" when searching for focused image</li> </ul> </li> <li>MobileCoupon parser renamed to TopUp parser</li> </ul> DoDoENT tag:github.com,2008:Repository/34118079/v3.1.0 2016-12-13T19:08:32Z v3.1.0 <ul> <li>removed <code>RecognizerView</code> method <code>setInitialScanningPaused</code>. For achieving the same functionality, method <code>pauseScanning</code> should be used.</li> <li>added support for scanning IBANs that contain spaces and dashes</li> <li>added support for scanning IBAN from Georgia in Segment Scan</li> <li>added support for cancelling ongoing DirectAPI recognition call</li> </ul> DoDoENT tag:github.com,2008:Repository/34118079/v3.0.0 2016-11-16T19:53:30Z v3.0.0 <ul> <li><em>LibRecognizer.aar</em> renamed to <em>LibBlinkInput.aar</em></li> <li><em>libBlinkOCR.so</em> renamed to <em>libBlinkInput.so</em></li> <li>workaround for camera bug on some samsung devices</li> <li>fixed camera bug on LG X Cam</li> <li>fixed camera bug on OnePlus 3</li> <li>fixed rare NPE in SegmentScanActivity</li> <li>improved IBAN parser</li> <li>improved amount parser <ul> <li>amount parser settings now does not have <em>expectAsterixOrEqualsPrefix</em> and <em>expectCurrencySymbol</em> anymore - this is now handled automatically</li> </ul> </li> <li>migrated to libc++ native runtime and used clang from NDKr13b for building the native code <ul> <li>this enabled c++14 features which will help us yield much better performance in the future</li> </ul> </li> </ul> DoDoENT