GeniusScanSDK.ScanFlow.Android 5.0.0-beta2

This is a prerelease version of GeniusScanSDK.ScanFlow.Android.
There is a newer version of this package available.
See the version list below for details.
dotnet add package GeniusScanSDK.ScanFlow.Android --version 5.0.0-beta2                
NuGet\Install-Package GeniusScanSDK.ScanFlow.Android -Version 5.0.0-beta2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GeniusScanSDK.ScanFlow.Android" Version="5.0.0-beta2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add GeniusScanSDK.ScanFlow.Android --version 5.0.0-beta2                
#r "nuget: GeniusScanSDK.ScanFlow.Android, 5.0.0-beta2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install GeniusScanSDK.ScanFlow.Android as a Cake Addin
#addin nuget:?package=GeniusScanSDK.ScanFlow.Android&version=5.0.0-beta2&prerelease

// Install GeniusScanSDK.ScanFlow.Android as a Cake Tool
#tool nuget:?package=GeniusScanSDK.ScanFlow.Android&version=5.0.0-beta2&prerelease                

Description

This Xamarin plugin allows you to access the Genius Scan SDK core features from a Xamarin.Android application:

  • Automatic document detection
  • Document perspective correction
  • Image enhancement with 4 different modes (Black & white, Monochrome, Color, Photo)
  • Batch scanning of several pages in row
  • OCR to extract raw text from images and generate PDF with invisible text layer

License

This plugin is based on the Genius Scan SDK for which you need to setup a license. You can aleady try the "demo" version for free by not setting a license key, the only limitation being that the app will exit after 60 seconds.

To buy a license:

  1. Sign up to our developer console
  2. Submit a quote request for each application

You can learn more about licensing in our website and contact us at sdk@geniusscan.com for further questions.

Demo application

As an example, you can check our demo application

Usage

Set the license key

Initialize the SDK with a valid license key:

ScanFlow.SetLicenseKey(Platform.CurrentActivity, licenseKey, /* autoRefresh = */ true);

This method doesn't return anything. However, other methods of the plugin will fail if the license key is invalid or expired. Note that, for testing purpose, you can also use the plugin without setting a license key, but it will only work for 60 seconds.

It is recommended to show a message to users asking them to update the application in case the license has expired.

Start the scanner module

The following line will start a scan flow with the corresponding configuration:

PluginBridge.ScanWithConfiguration(Xamarin.Essentials.Platform.CurrentActivity, configuration);

The method ScanWithConfiguration takes a configuration parameter which can take the following options:

  • source: camera, image or library (defaults to camera)
  • sourceImageUrl: an absolute image url, required if source is image. Example: file:///var/…/image.png
  • multiPage: boolean (defaults to true). If true, after a page is scanned, a prompt to scan another page will be displayed. If false, a single page will be scanned.
  • multiPageFormat: pdf, tiff, none (defaults to pdf)
  • defaultFilter: none, blackAndWhite, monochrome, color, photo (by default, the filter is chosen automatically)
  • pdfPageSize: fit, a4, letter, defaults to fit.
  • pdfMaxScanDimension: max dimension in pixels when images are scaled before PDF generation, for example 2000 to fit both height and width within 2000px. Defaults to 0, which means no scaling is performed.
  • pdfFontFileUrl: Custom font file used during the PDF generation to embed an invisible text layer. If null, a default font is used, which only supports Latin languages.
  • jpegQuality: JPEG quality used to compress captured images. Between 0 and 100, 100 being the best quality. Default is 60.
  • postProcessingActions: an array with the desired actions to display during the post processing screen (defaults to all actions). Possible actions are rotate, editFilter.
  • flashButtonHidden: boolean (default to false)
  • defaultFlashMode: auto, on, off (default to off)
  • foregroundColor: string representing a color, must start with a #. The color of the icons, text (defaults to '#ffffff').
  • backgroundColor: string representing a color, must start with a #. The color of the toolbar, screen background (defaults to black)
  • highlightColor: string representing a color, must start with a #. The color of the image overlays (default to blue)
  • menuColor: string representing a color, must start with a #. The color of the menus (defaults to system defaults.)
  • ocrConfiguration: text recognition options. Text recognition will run on a background thread for every captured image. No text recognition will be applied if this parameter is not present.
    • languages: list of the BCP 47 language codes (eg ["en-US"]) for which to run text recognition. Note that text recognition will take longer if multiple languages are specified.
    • outputFormats: an array with the formats in which the OCR result is made available in the ScanFlow result (defaults to all formats). Possible formats are rawText, hOCR and textLayerInPDF.

The result of the scan flow will be provided in the OnActivityResult callback:

protected override void OnActivityResult(Int32 requestCode, Result resultCode, Intent data)
    {
        PromiseResult result = PluginBridge.GetPromiseResultFromActivityResult(this, requestCode, (int)resultCode, data);
        // Do something with the result
    }

The result object contains:

  • multiPageDocumentUrl: a document containing all the scanned pages (example: "file://<filepath>.pdf")
  • scans: an array of scan objects. Each scan object has:
    • originalUrl: the original file as scanned from the camera. "file://<filepath>.jpeg"
    • enhancedUrl: the cropped and enhanced file, as processed by the SDK. "file://<filepath>.{jpeg|png}"
    • ocrResult: the result of text recognition for this scan
      • text: the raw text that was recognized
      • hocrTextLayout: the recognized text in hOCR format (with position, style…)

Proguard

Due to an issue in Xamarin, any Proguard files in AARs are not taken into account in Xamarin apps. This means any developer using the package has to manually add the -keep class com.geniusscansdk.** { *; } line to their Xamarin proguard configuration until this Xamarin issue is fixed.

It's currently being tracked here: https://github.com/xamarin/xamarin-android/issues/3752

FAQ

How do I get the UI translated to another language?

The device's locale determines the languages used by the plugin for all strings: user guidance, menus, dialogs…

The plugin supports a wide variety of languages: English (default), Arabic, Chinese (Simplified), Chinese (Traditional), Danish, Dutch, French, German, Hebrew, Indonesian, Italian, Japanese, Korean, Portuguese, Russian, Spanish, Swedish, Turkish, Vietnamese.

What should I do if my license is invalid?

Make sure that the license key is correct, that is has not expired, and that it is used with the App ID it was generated for. To learn more about the procurement and replacement of license keys, refer to the Licensing FAQ.

Troubleshooting

Refer to the troubleshooting guides of the native Android libraries to resolve common configuration and build problems.

Changelog

See changelog

Product Compatible and additional computed target framework versions.
.NET net7.0-android33.0 is compatible.  net8.0-android was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
5.4.0 138 11/26/2024
5.3.1 133 11/12/2024
5.3.0 481 10/4/2024
5.2.0 196 9/11/2024
5.1.5 159 8/5/2024
5.1.4 106 7/29/2024
5.1.3 120 7/26/2024
5.1.2 124 7/23/2024
5.1.1 166 7/11/2024
5.1.0 378 6/19/2024
5.0.8 301 6/5/2024
5.0.7 170 6/3/2024
5.0.6 229 5/24/2024
5.0.5 334 4/22/2024
5.0.4 167 4/18/2024
5.0.3 223 4/15/2024
5.0.2 248 4/9/2024
5.0.1 274 4/4/2024
5.0.0 203 4/3/2024
5.0.0-beta9 196 3/19/2024
5.0.0-beta8 263 3/5/2024
5.0.0-beta7 158 2/20/2024
5.0.0-beta6 182 2/15/2024
5.0.0-beta5 208 2/14/2024
5.0.0-beta4 155 2/9/2024
5.0.0-beta3 194 2/9/2024
5.0.0-beta2 189 2/7/2024
5.0.0-beta1 144 1/19/2024
4.21.1 236 2/14/2024
4.21.0 538 12/20/2023
4.20.1 336 12/12/2023
4.20.0 297 12/11/2023
4.19.0 308 11/27/2023
4.18.0 302 11/15/2023
4.17.0 256 11/15/2023
4.16.0 266 11/7/2023
4.15.0 568 11/2/2023
4.14.0 330 10/17/2023
4.13.0 412 9/1/2023
4.12.0 1,119 6/1/2023
4.11.0 1,292 5/24/2023
4.10.1 1,968 4/20/2023
4.10.0 472 4/13/2023
4.9.0 1,185 3/14/2023
4.8.0 1,969 1/24/2023
4.7.4 2,229 12/9/2022
4.7.3 1,286 11/17/2022
4.7.2 1,078 11/11/2022
4.7.1 996 11/9/2022
4.7.0 880 11/7/2022
4.6.0 1,192 10/4/2022
4.5.0 1,642 4/22/2022
4.4.7 1,354 3/26/2022
4.4.6 866 3/15/2022
4.4.5 833 3/1/2022
4.4.4 839 2/16/2022
4.4.3 915 1/16/2022
4.4.2 617 12/15/2021
4.4.1 1,077 12/8/2021
4.3.0 810 11/23/2021
4.2.2 906 11/12/2021
4.1.4 783 10/26/2021
4.1.3 576 9/28/2021
4.1.2 605 9/14/2021
4.1.1 659 9/10/2021
4.1.0 669 9/9/2021
4.0.12 601 8/26/2021
4.0.11 618 8/18/2021
4.0.10 673 7/2/2021
4.0.9 627 6/24/2021
4.0.8 637 5/7/2021
4.0.7 750 3/31/2021
4.0.6 576 3/29/2021
1.0.7 760 3/15/2021
1.0.5 787 2/9/2021