├── .gitignore
├── COPYRIGHT.md
├── README.md
├── blinkid-ui-lib
├── .gitignore
├── build.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── kotlin
│ └── com
│ │ └── microblink
│ │ └── documentscanflow
│ │ ├── BaseDocumentScanActivity.kt
│ │ ├── CameraErrorHandler.kt
│ │ ├── ScanFlowListener.kt
│ │ ├── ScanFlowState.kt
│ │ ├── Utils.kt
│ │ ├── country
│ │ ├── Country.kt
│ │ ├── CountryFactory.kt
│ │ ├── GenericCountry.kt
│ │ └── SupportedCountry.kt
│ │ ├── document
│ │ ├── Document.kt
│ │ ├── DocumentType.kt
│ │ └── RecognitionsBuilder.kt
│ │ ├── recognition
│ │ ├── BaseRecognition.kt
│ │ ├── ExtractionExt.kt
│ │ ├── RecognitionError.kt
│ │ ├── RecognitionResult.kt
│ │ ├── RecognizerManager.kt
│ │ ├── RecognizerProvider.kt
│ │ ├── ResultMergeException.kt
│ │ ├── ResultValidator.kt
│ │ ├── config
│ │ │ ├── DefaultRecognitionConfig.kt
│ │ │ └── RecognitionConfig.kt
│ │ ├── framelistener
│ │ │ ├── FrameGrabberMode.kt
│ │ │ └── FrameListener.java
│ │ ├── implementations
│ │ │ ├── AustriaDlRecognition.kt
│ │ │ ├── AustriaIdRecognition.kt
│ │ │ ├── AustriaPassportRecognition.kt
│ │ │ ├── BelgiumIdRecognition.kt
│ │ │ ├── BruneiIdRecognition.kt
│ │ │ ├── BruneiMilitaryIdRecognition.kt
│ │ │ ├── BruneiResidencePermitRecognition.kt
│ │ │ ├── BruneiTemporaryResidencePermitRecognition.kt
│ │ │ ├── ColombiaDlRecognition.kt
│ │ │ ├── ColombiaIdRecognition.kt
│ │ │ ├── CroatiaIdRecognition.kt
│ │ │ ├── CyprusIdRecognition.kt
│ │ │ ├── CyprusOldIdRecognition.kt
│ │ │ ├── CzechIdRecognition.kt
│ │ │ ├── EgyptIdRecognition.kt
│ │ │ ├── EudlRecognition.kt
│ │ │ ├── GermanyDlRecognition.kt
│ │ │ ├── GermanyIdRecognition.kt
│ │ │ ├── GermanyOldIdRecognition.kt
│ │ │ ├── HongKongIdRecognition.kt
│ │ │ ├── IndonesiaIdRecognition.kt
│ │ │ ├── IrelandDlRecognition.kt
│ │ │ ├── ItalyDlRecognition.kt
│ │ │ ├── JordanIdRecognition.kt
│ │ │ ├── KuwaitIdRecognition.kt
│ │ │ ├── MalaysiaDlRecognition.kt
│ │ │ ├── MalaysiaIkadRecognition.kt
│ │ │ ├── MalaysiaKasRecognition.kt
│ │ │ ├── MalaysiaMyKadRecognition.kt
│ │ │ ├── MalaysiaPrRecognition.kt
│ │ │ ├── MalaysiaTenteraRecognition.kt
│ │ │ ├── MexicoIdRecognition.kt
│ │ │ ├── MoroccoIdRecognition.kt
│ │ │ ├── NewZealandDlRecognition.kt
│ │ │ ├── NigeriaDlRecognition.kt
│ │ │ ├── NigeriaVoterIdRecognition.kt
│ │ │ ├── PolandIdRecognition.kt
│ │ │ ├── RomaniaIdRecognition.kt
│ │ │ ├── SingaporeDlRecognition.kt
│ │ │ ├── SingaporeIdRecognition.kt
│ │ │ ├── SlovakiaIdRecognition.kt
│ │ │ ├── SloveniaIdRecognition.kt
│ │ │ ├── SpainDlRecognition.kt
│ │ │ ├── SwedenDlRecognition.kt
│ │ │ ├── SwitzerlandDlRecognition.kt
│ │ │ ├── SwitzerlandIdRecognition.kt
│ │ │ ├── SwitzerlandPassportRecognition.kt
│ │ │ ├── UnitedArabEmiratesDlRecognition.kt
│ │ │ ├── UnitedArabEmiratesIdRecognition.kt
│ │ │ ├── UsdlRecognition.kt
│ │ │ ├── UsdlUnder21Recognition.kt
│ │ │ └── VictoriaDlRecognition.kt
│ │ ├── resultentry
│ │ │ ├── DateResultEntry.kt
│ │ │ ├── ResultEntry.kt
│ │ │ ├── ResultKey.kt
│ │ │ └── StringResultEntry.kt
│ │ └── util
│ │ │ ├── FormattingUtils.kt
│ │ │ ├── ImageStorage.kt
│ │ │ └── StringCombiner.kt
│ │ └── ui
│ │ ├── InstructionsHandler.kt
│ │ ├── TorchButtonHandler.kt
│ │ ├── documentchooser
│ │ ├── DefaultDocumentChooser.kt
│ │ ├── DocumentChooser.kt
│ │ ├── countryfilter
│ │ │ ├── AllowAllCountryFilter.kt
│ │ │ ├── BlacklistCountryFilter.kt
│ │ │ ├── CountryFilter.kt
│ │ │ └── WhitelistCountryFilter.kt
│ │ └── defaultimplementation
│ │ │ ├── ChooseCountryActivity.kt
│ │ │ ├── adapters
│ │ │ ├── AlphabeticListAdapter.kt
│ │ │ └── FilterListAdapter.kt
│ │ │ └── fragments
│ │ │ ├── CountryFindFragment.kt
│ │ │ ├── CountryListFragment.kt
│ │ │ └── Delegates.kt
│ │ ├── localization
│ │ ├── DefaultLocalizationManager.kt
│ │ └── LocalizationManager.kt
│ │ ├── scanlineanimator
│ │ └── EmptyScanLineAnimator.kt
│ │ ├── scansoundplayer
│ │ ├── EmptyScanSuccessPlayer.kt
│ │ ├── ScanSuccessPlayer.kt
│ │ └── SoundPoolScanSuccessPlayer.kt
│ │ ├── scantimeouthandler
│ │ ├── DefaultScanTimeoutHandler.kt
│ │ └── ScanTimeoutHandler.kt
│ │ └── splashoverlay
│ │ ├── InvisibleSplashOverlaySettings.kt
│ │ └── SplashOverlaySettings.kt
│ └── res
│ ├── anim
│ ├── mb_hide_text.xml
│ └── mb_show_text.xml
│ ├── drawable-hdpi
│ ├── mb_ic_arrow_right.png
│ ├── mb_ic_checkmark.png
│ ├── mb_ic_flip_card.png
│ ├── mb_ic_torch_off.png
│ └── mb_ic_torch_on.png
│ ├── drawable-mdpi
│ ├── mb_ic_arrow_right.png
│ ├── mb_ic_checkmark.png
│ ├── mb_ic_flip_card.png
│ ├── mb_ic_torch_off.png
│ └── mb_ic_torch_on.png
│ ├── drawable-xhdpi
│ ├── mb_ic_arrow_right.png
│ ├── mb_ic_checkmark.png
│ ├── mb_ic_flip_card.png
│ ├── mb_ic_torch_off.png
│ └── mb_ic_torch_on.png
│ ├── drawable-xxhdpi
│ ├── mb_ic_arrow_right.png
│ ├── mb_ic_checkmark.png
│ ├── mb_ic_flip_card.png
│ ├── mb_ic_torch_off.png
│ └── mb_ic_torch_on.png
│ ├── drawable-xxxhdpi
│ ├── mb_ic_arrow_right.png
│ ├── mb_ic_checkmark.png
│ ├── mb_ic_flip_card.png
│ ├── mb_ic_torch_off.png
│ └── mb_ic_torch_on.png
│ ├── drawable
│ └── mb_bg_choose_country.xml
│ ├── layout
│ ├── mb_activity_choose_country.xml
│ ├── mb_activity_scan_document.xml
│ ├── mb_fragment_country_list.xml
│ ├── mb_include_scan_bottom_container.xml
│ ├── mb_include_splash_overlay.xml
│ └── mb_list_item_country.xml
│ ├── menu
│ ├── mb_menu_choose_country.xml
│ └── mb_menu_scan.xml
│ ├── raw
│ └── beep.mp3
│ ├── values-de
│ ├── result_entry_keys.xml
│ └── strings.xml
│ ├── values-es
│ ├── result_entry_keys.xml
│ └── strings.xml
│ ├── values-fr
│ ├── result_entry_keys.xml
│ └── strings.xml
│ ├── values-hdpi
│ └── dimens.xml
│ ├── values-ldrtl
│ └── integers.xml
│ ├── values-v19
│ └── dimens.xml
│ ├── values-xhdpi
│ └── dimens.xml
│ └── values
│ ├── attrs_choose_country.xml
│ ├── attrs_scan.xml
│ ├── colors.xml
│ ├── dimens.xml
│ ├── integers.xml
│ ├── result_entry_keys.xml
│ ├── strings.xml
│ ├── styles_text.xml
│ └── styles_theme.xml
├── blinkid-ui-sample-app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ └── com.microblink.blinkidui.sample.mblic
│ ├── java
│ └── com
│ │ └── microblink
│ │ ├── ResultsActivity.java
│ │ ├── SampleApp.java
│ │ └── ScanActivity.java
│ └── res
│ ├── drawable
│ └── custom_bg_choose_country.xml
│ ├── layout
│ ├── activity_result.xml
│ └── mb_include_splash_overlay.xml
│ ├── mipmap-hdpi
│ └── ic_launcher.png
│ ├── mipmap-mdpi
│ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ └── ic_launcher.png
│ ├── mipmap-xxhdpi
│ └── ic_launcher.png
│ └── values
│ ├── colors.xml
│ ├── strings.xml
│ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | .idea
5 | .DS_Store
6 | /build
7 | /captures
8 |
--------------------------------------------------------------------------------
/COPYRIGHT.md:
--------------------------------------------------------------------------------
1 | Copyright (c) 2016. Microblink LLC
--------------------------------------------------------------------------------
/blinkid-ui-lib/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'kotlin-android'
3 | apply plugin: 'kotlin-android-extensions'
4 | apply plugin: 'com.github.dcendents.android-maven'
5 |
6 | group='com.github.BlinkID'
7 |
8 | ext.altDependencyProperty = "ALTERNATIVE_BLINK_ID_DEPENDENCY"
9 | ext.isAltDependencyProjectProperty = "IS_ALTERNATIVE_BLINK_ID_DEPENDENCY_PROJECT"
10 |
11 | ext.missingDimensionProperty = "MISSING_DIMENSION"
12 | ext.missingDimensionRequestedValueProperty = "MISSING_DIMENSION_REQUESTED_VALUE"
13 |
14 | android {
15 | compileSdkVersion 28
16 | buildToolsVersion "28.0.3"
17 |
18 | defaultConfig {
19 | minSdkVersion 16
20 | targetSdkVersion 28
21 | versionCode 1
22 | versionName "1.0"
23 |
24 | if (project.hasProperty(missingDimensionProperty)) {
25 | missingDimensionStrategy project.property(missingDimensionProperty), project.property(missingDimensionRequestedValueProperty)
26 | }
27 | }
28 |
29 | buildTypes {
30 | release {
31 | minifyEnabled false
32 | }
33 | distribute {
34 | minifyEnabled false
35 | }
36 | }
37 |
38 | sourceSets {
39 | main.java.srcDirs += 'src/main/kotlin'
40 | }
41 | }
42 |
43 | ext.kotlin_version = '1.3.10'
44 | ext.appCompatVersion = "28.0.0"
45 |
46 | dependencies {
47 | implementation fileTree(include: ['*.jar'], dir: 'libs')
48 |
49 | implementation "com.android.support:appcompat-v7:$appCompatVersion"
50 | implementation "com.android.support:design:$appCompatVersion"
51 |
52 | implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
53 | implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
54 |
55 | if (isBlinkIdDependencyProject()) {
56 | implementation project(getBlinkIdDependency())
57 | } else {
58 | api(getBlinkIdDependency()) {
59 | transitive = true
60 | }
61 | }
62 | }
63 |
64 | String getBlinkIdDependency() {
65 | if (project.hasProperty(altDependencyProperty)) {
66 | return project.property(altDependencyProperty)
67 | } else {
68 | return "com.microblink:blinkid:4.11.1@aar"
69 | }
70 | }
71 |
72 | boolean isBlinkIdDependencyProject() {
73 | if (project.hasProperty(altDependencyProperty)
74 | && project.hasProperty(isAltDependencyProjectProperty)) {
75 | return project.property(isAltDependencyProjectProperty).toBoolean()
76 | } else {
77 | return false
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/blinkid-ui-lib/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Jul 26 08:54:52 CEST 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/CameraErrorHandler.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow
2 |
3 | import android.content.Context
4 | import android.support.annotation.StringRes
5 | import android.support.v7.app.AlertDialog
6 | import com.microblink.hardware.camera.AutoFocusRequiredButNotSupportedException
7 | import com.microblink.hardware.camera.CameraResolutionTooSmallException
8 | import com.microblink.recognition.FeatureNotSupportedException
9 | import com.microblink.recognition.RecognizerError
10 | import com.microblink.view.NotSupportedReason
11 |
12 | internal class CameraErrorHandler(private val context: Context, private val onUnrecoverableError: () -> Unit) {
13 |
14 | fun handleCameraError(exc: Throwable?) {
15 | when (exc) {
16 | is CameraResolutionTooSmallException -> handleNotSupportedError(getString(R.string.mb_feature_unsupported_device))
17 | is RecognizerError -> {
18 | handleInitError(getString(R.string.mb_error_initializing))
19 | }
20 | is UnsatisfiedLinkError -> handleInitError(getString(R.string.mb_error_initializing))
21 | is AutoFocusRequiredButNotSupportedException -> handleNotSupportedError(getString(R.string.mb_feature_unsupported_autofocus))
22 | is FeatureNotSupportedException -> handleNotSupportedError(getNotSupportedReasonDescription(exc.reason))
23 | is SecurityException -> handleInitError(getString(R.string.mb_camera_not_allowed))
24 | else -> handleInitError(getString(R.string.mb_camera_error))
25 | }
26 | }
27 |
28 | private fun handleInitError(message: String) = AlertDialog.Builder(context, R.style.MbErrorAlertDialogTheme)
29 | .setTitle(getString(R.string.mb_title_error_starting))
30 | .setMessage(message)
31 | .setNeutralButton(getString(R.string.mb_ok)) { _, _ -> onUnrecoverableError() }
32 | .setCancelable(false)
33 | .create()
34 | .show()
35 |
36 | private fun handleNotSupportedError(notSupportedReason: String?) = AlertDialog.Builder(context, R.style.MbErrorAlertDialogTheme)
37 | .setTitle(getString(R.string.mb_title_not_supported))
38 | .setMessage(notSupportedReason)
39 | .setNeutralButton(getString(R.string.mb_ok)) { _, _ -> onUnrecoverableError() }
40 | .setCancelable(false)
41 | .create()
42 | .show()
43 |
44 | private fun getNotSupportedReasonDescription(reason: NotSupportedReason): String = when (reason) {
45 | NotSupportedReason.CUSTOM_UI_FORBIDDEN -> getString(com.microblink.library.R.string.mb_custom_ui_forbidden)
46 | NotSupportedReason.INVALID_OR_MISSING_LICENSE -> getString(com.microblink.library.R.string.mb_invalid_license)
47 | NotSupportedReason.UNSUPPORTED_ANDROID_VERSION -> getString(com.microblink.library.R.string.mb_feature_unsupported_android_version)
48 | else -> getString(com.microblink.library.R.string.mb_feature_unsupported_device)
49 | }
50 |
51 | private fun getString(@StringRes id: Int) = context.getString(id)
52 |
53 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ScanFlowListener.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow
2 |
3 | import com.microblink.documentscanflow.document.Document
4 | import com.microblink.documentscanflow.recognition.RecognitionResult
5 | import com.microblink.image.Image
6 |
7 | interface ScanFlowListener {
8 |
9 | fun onScanStarted()
10 |
11 | fun onFirstSideScanned(recognitionResult: RecognitionResult, successFrame: Image?)
12 |
13 | fun onEntireDocumentScanned(recognitionResult: RecognitionResult, successFrame: Image?)
14 |
15 | fun onSelectedDocumentChanged(oldDocument: Document, newDocument: Document)
16 |
17 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ScanFlowState.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow
2 |
3 | enum class ScanFlowState {
4 |
5 | NOT_STARTED,
6 | FRONT_SIDE_SCAN,
7 | BACK_SIDE_SCAN,
8 | ANY_SIDE_SCAN
9 |
10 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/Utils.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow
2 |
3 | import android.content.Context
4 | import android.support.annotation.AttrRes
5 | import android.support.annotation.ColorInt
6 | import android.support.annotation.LayoutRes
7 | import android.util.TypedValue
8 | import android.view.LayoutInflater
9 | import android.view.View
10 | import android.view.ViewGroup
11 | import android.view.animation.AlphaAnimation
12 | import android.view.animation.Animation
13 | import com.microblink.entities.detectors.quad.document.DocumentDetector
14 | import com.microblink.entities.detectors.quad.document.DocumentSpecification
15 | import com.microblink.entities.detectors.quad.document.DocumentSpecificationPreset
16 | import com.microblink.entities.processors.imageReturn.ImageReturnProcessor
17 | import com.microblink.entities.recognizers.Recognizer
18 | import com.microblink.entities.recognizers.blinkid.mrtd.MrzResult
19 | import com.microblink.entities.recognizers.detector.DetectorRecognizer
20 | import com.microblink.entities.recognizers.templating.ProcessorGroup
21 | import com.microblink.entities.recognizers.templating.TemplatingClass
22 | import com.microblink.entities.recognizers.templating.dewarpPolicies.DPIBasedDewarpPolicy
23 | import com.microblink.geometry.Rectangle
24 | import com.microblink.results.date.Date
25 | import java.util.*
26 |
27 | internal fun View.fadeOut(duration : Long) {
28 | val alpha = AlphaAnimation(1.0f, 0.0f)
29 | alpha.duration = duration
30 | alpha.setAnimationListener(object : Animation.AnimationListener {
31 | override fun onAnimationStart(animation: Animation) {
32 | }
33 |
34 | override fun onAnimationEnd(animation: Animation) {
35 | visibility = View.GONE
36 | }
37 |
38 | override fun onAnimationRepeat(animation: Animation) {
39 | }
40 | })
41 | startAnimation(alpha)
42 | }
43 |
44 | internal fun View.setVisible(isVisible : Boolean) {
45 | visibility = if (isVisible) View.VISIBLE
46 | else View.GONE
47 | }
48 |
49 | /**
50 | * Compares current date with the given date and returns positive integer if current date is greater than
51 | * the given argument, negative integer if the given argument is greater than current date. If dates are the
52 | * same returns 0.
53 | */
54 | internal fun Date.compareTo(other: Date): Int {
55 | if (this.year < other.year) {
56 | return -1
57 | } else if (this.year > other.year) {
58 | return 1
59 | }
60 | if (this.month < other.month) {
61 | return -1
62 | } else if (this.month > other.month) {
63 | return 1
64 | }
65 | if (this.day < other.day) {
66 | return -1
67 | } else if (this.day > other.day) {
68 | return 1
69 | }
70 | return 0
71 | }
72 |
73 | internal fun String.sanitizeMRZString(): String {
74 | return this.replace('<', ' ').trim()
75 | }
76 |
77 | internal fun ViewGroup.inflate(@LayoutRes layoutRes: Int, attachToRoot: Boolean = false): View {
78 | return LayoutInflater.from(context).inflate(layoutRes, this, attachToRoot)
79 | }
80 |
81 | internal fun Recognizer.Result.isEmpty() = this.resultState == Recognizer.Result.State.Empty
82 |
83 | internal fun Recognizer.Result.isNotEmpty() = this.resultState != Recognizer.Result.State.Empty
84 |
85 | internal fun MrzResult.buildTitle() = "$primaryId $secondaryId"
86 |
87 | internal fun Calendar.currentDate() = Date(get(Calendar.DAY_OF_MONTH), get(Calendar.MONTH) + 1, get(Calendar.YEAR))
88 |
89 |
90 | @ColorInt
91 | internal fun Context.getThemeColor(@AttrRes id: Int): Int {
92 | val typedValue = TypedValue()
93 | val a = obtainStyledAttributes(typedValue.data, intArrayOf(id))
94 | val color = a.getColor(0, 0)
95 | a.recycle()
96 | return color
97 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/country/Country.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.country
2 |
3 | import com.microblink.documentscanflow.R
4 | import com.microblink.documentscanflow.document.DocumentType
5 | import com.microblink.documentscanflow.recognition.BaseRecognition
6 | import java.util.*
7 |
8 | interface Country {
9 |
10 | val code: String
11 | val recognitionsByDocumentType: Map
12 | val documentNameOverrides: Map
13 |
14 | /**
15 | * Returns the name of this country, localized to the current locale (current app language).
16 | * Returns the empty string if this locale does not correspond to a specific
17 | * country.
18 | */
19 | fun getLocalisedName(): String {
20 | val locale = Locale("", code)
21 | return locale.getDisplayCountry(CountryFactory.currentLocale)
22 | }
23 |
24 | fun getRecognition(documentType: DocumentType): BaseRecognition {
25 | return recognitionsByDocumentType[documentType]
26 | ?: throw IllegalArgumentException("This county does not support $documentType")
27 | }
28 |
29 | fun getSupportedDocumentTypes() = recognitionsByDocumentType.keys.toList()
30 |
31 | fun getDocumentNameStringId(documentType: DocumentType): Int {
32 | val overriddenName = documentNameOverrides[documentType]
33 | if (overriddenName != null) return overriddenName
34 |
35 | return when(documentType) {
36 | DocumentType.ID -> R.string.mb_id_card
37 | DocumentType.OLD_ID -> R.string.mb_old_id_card
38 | DocumentType.DL -> R.string.mb_driver_license
39 | DocumentType.PASSPORT -> R.string.mb_passport
40 | DocumentType.TRAVEL_DOCUMENT_VISA -> R.string.mb_visa
41 | DocumentType.RESIDENCE_PERMIT -> R.string.mb_residence_permit
42 | DocumentType.TEMPORARY_RESIDENCE_PERMIT -> R.string.mb_temporary_residence_permit
43 | DocumentType.IMMIGRATOR_ID -> R.string.mb_immigrator_id
44 | DocumentType.MILITARY_ID -> R.string.mb_military_id
45 | DocumentType.NEW_ID -> R.string.mb_new_id_card
46 | DocumentType.TEMPORARY_RESIDENT_ID -> R.string.mb_temporary_resident_id
47 | DocumentType.PERMANENT_RESIDENT_ID -> R.string.mb_permanent_resident_id
48 | DocumentType.VICTORIA_DL -> R.string.mb_victoria_dl
49 | DocumentType.WORK_PASS -> R.string.mb_work_pass
50 | DocumentType.UNDER_21_ID -> R.string.mb_under_21_id
51 | DocumentType.VOTER_ID -> R.string.mb_voter_id
52 | }
53 | }
54 |
55 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/country/CountryFactory.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.country
2 |
3 | import com.microblink.documentscanflow.ui.documentchooser.countryfilter.CountryFilter
4 | import java.text.Collator
5 | import java.util.*
6 |
7 | object CountryFactory {
8 |
9 | var currentLocale: Locale = Locale.ENGLISH
10 | private set
11 |
12 | private val countriesByCode = HashMap()
13 |
14 | private lateinit var sortedCountries: List
15 |
16 | private var shouldSortCountries = true
17 |
18 | init {
19 | for (supportedCountry in SupportedCountry.values()) {
20 | countriesByCode[supportedCountry.code] = supportedCountry
21 | }
22 |
23 | val countryCodes: Array = Locale.getISOCountries()
24 | for (countryCode in countryCodes) {
25 | val countryCodeLowercase = countryCode.toLowerCase(Locale.US)
26 | if (!countriesByCode.containsKey(countryCodeLowercase)) {
27 | val country = GenericCountry(countryCodeLowercase)
28 | if (!country.getLocalisedName().isEmpty()) {
29 | countriesByCode[countryCodeLowercase] = country
30 | }
31 | }
32 | }
33 | }
34 |
35 | fun getCountryForCode(countryCode: String): Country? {
36 | val lowercaseCode = countryCode.toLowerCase(Locale.US)
37 | return countriesByCode[lowercaseCode]
38 | }
39 |
40 | fun getSortedCountries(countryFilter: CountryFilter): List {
41 | if (shouldSortCountries) {
42 | sortedCountries = createSortedCountriesList()
43 | shouldSortCountries = false
44 | }
45 | return countryFilter.filter(sortedCountries)
46 | }
47 |
48 | internal fun setLocale(newLocale: Locale) {
49 | if (currentLocale.language != newLocale.language) {
50 | shouldSortCountries = true
51 | }
52 | currentLocale = newLocale
53 | }
54 |
55 | private fun createSortedCountriesList(): List {
56 | val coll = Collator.getInstance()
57 | coll.strength = Collator.SECONDARY
58 | return countriesByCode.values
59 | .sortedWith(
60 | Comparator {
61 | country1, country2 ->
62 | val name1 = country1.getLocalisedName()
63 | val name2 = country2.getLocalisedName()
64 | if (name1.isNotEmpty() && name2.isNotEmpty() && name1[0] != name2[0]) {
65 | coll.compare(name1.substring(0, 1), name2.substring(0, 1))
66 | } else {
67 | coll.compare(name1, name2)
68 | }
69 | })
70 | }
71 |
72 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/country/GenericCountry.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.country
2 |
3 | import com.microblink.documentscanflow.document.RecognitionsBuilder
4 | import com.microblink.documentscanflow.document.DocumentType
5 | import com.microblink.documentscanflow.recognition.BaseRecognition
6 |
7 | class GenericCountry(override val code: String) : Country {
8 |
9 | override val documentNameOverrides: Map = LinkedHashMap()
10 |
11 | override val recognitionsByDocumentType: Map = RecognitionsBuilder().build()
12 |
13 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/document/Document.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.document
2 |
3 | import android.content.Context
4 | import android.support.v4.util.ObjectsCompat
5 | import com.microblink.documentscanflow.country.Country
6 |
7 | class Document(val country: Country, val documentType: DocumentType) {
8 |
9 | init {
10 | if (documentType !in country.getSupportedDocumentTypes()) {
11 | throw IllegalArgumentException("${country.getLocalisedName()} does not support $documentType")
12 | }
13 | }
14 |
15 | fun isFullySupported() = getRecognition().isFullySupported
16 |
17 | fun getRecognition() = country.getRecognition(documentType)
18 |
19 | fun getTitle(context : Context): String {
20 | return country.getLocalisedName() + ", " + context.getString(getDocumentNameStringId())
21 | }
22 |
23 | private fun getDocumentNameStringId() = country.getDocumentNameStringId(documentType)
24 |
25 | override fun equals(other: Any?): Boolean {
26 | return other is Document && other.country == this.country && other.documentType == this.documentType
27 | }
28 |
29 | override fun hashCode() = ObjectsCompat.hash(documentType, country)
30 |
31 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/document/DocumentType.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.document
2 |
3 | enum class DocumentType {
4 |
5 | ID,
6 | OLD_ID,
7 | DL,
8 | PASSPORT,
9 | TRAVEL_DOCUMENT_VISA,
10 | RESIDENCE_PERMIT,
11 | TEMPORARY_RESIDENCE_PERMIT,
12 | IMMIGRATOR_ID,
13 | MILITARY_ID,
14 | NEW_ID,
15 | TEMPORARY_RESIDENT_ID,
16 | PERMANENT_RESIDENT_ID,
17 | VOTER_ID,
18 |
19 | // country specific:
20 |
21 | // Australia
22 | VICTORIA_DL,
23 |
24 | // Singapore
25 | WORK_PASS,
26 |
27 | // USA
28 | UNDER_21_ID
29 |
30 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/ExtractionExt.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition
2 |
3 | import com.microblink.documentscanflow.isEmpty
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey
5 | import com.microblink.entities.recognizers.blinkbarcode.usdl.UsdlKeys
6 | import com.microblink.entities.recognizers.blinkbarcode.usdl.UsdlRecognizer
7 | import com.microblink.entities.recognizers.blinkid.mrtd.MrtdDocumentType
8 | import com.microblink.entities.recognizers.blinkid.mrtd.MrzResult
9 |
10 | fun BaseRecognition.extract(backResult: UsdlRecognizer.Result) {
11 | if (backResult.isEmpty()) return
12 |
13 | add(ResultKey.FIRST_NAME, backResult.firstName)
14 | add(ResultKey.LAST_NAME, backResult.lastName)
15 | add(ResultKey.FULL_NAME, backResult.fullName)
16 | add(ResultKey.DATE_OF_BIRTH, backResult.dateOfBirth)
17 | add(ResultKey.DATE_OF_ISSUE, backResult.dateOfIssue)
18 | addDateOfExpiry(backResult.dateOfExpiry.date)
19 | add(ResultKey.DOCUMENT_NUMBER, backResult.getField(UsdlKeys.CustomerIdNumber))
20 | add(ResultKey.ADDRESS, backResult.address)
21 | add(ResultKey.SEX, backResult.sex)
22 | add(ResultKey.VEHICLE_CLASS, backResult.vehicleClass)
23 | add(ResultKey.ENDORSEMENTS, backResult.endorsements)
24 | add(ResultKey.DRIVER_RESTRICTIONS, backResult.restrictions)
25 | add(ResultKey.BARCODE_DATA, backResult.rawStringData)
26 | }
27 |
28 | fun BaseRecognition.extract(mrzResult: MrzResult) {
29 | add(ResultKey.PRIMARY_ID, mrzResult.primaryId)
30 | add(ResultKey.SECONDARY_ID, mrzResult.secondaryId)
31 | add(ResultKey.DATE_OF_BIRTH, mrzResult.dateOfBirth.date)
32 | add(ResultKey.SEX, mrzResult.gender)
33 | add(ResultKey.NATIONALITY, mrzResult.nationality)
34 | add(ResultKey.DOCUMENT_CODE, mrzResult.documentCode)
35 | add(ResultKey.ISSUER, mrzResult.issuer)
36 | addDateOfExpiry(mrzResult.dateOfExpiry.date)
37 | add(ResultKey.OPTIONAL_FIELD_2, mrzResult.opt2)
38 | add(ResultKey.MRZ_TEXT, mrzResult.mrzText)
39 |
40 | if (mrzResult.documentType == MrtdDocumentType.MRTD_TYPE_GREEN_CARD) {
41 | add(ResultKey.ALIEN_NUMBER, mrzResult.alienNumber)
42 | add(ResultKey.APPLICATION_RECEIPT_NUMBER, mrzResult.applicationReceiptNumber)
43 | add(ResultKey.IMMIGRANT_CASE_NUMBER, mrzResult.immigrantCaseNumber)
44 | } else {
45 | add(ResultKey.DOCUMENT_NUMBER, mrzResult.documentNumber)
46 | add(ResultKey.OPTIONAL_FIELD_1, mrzResult.opt1)
47 | }
48 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/RecognitionError.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition
2 |
3 | internal enum class RecognitionError {
4 |
5 | NONE,
6 | SIDES_NOT_MATCHING
7 |
8 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/RecognitionResult.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultEntry
4 | import com.microblink.image.Image
5 |
6 | data class RecognitionResult(val resultTitle: String,
7 | val resultEntries: List>,
8 | val frontSideDocumentImage: Image? = null,
9 | val backSideDocumentImage: Image? = null,
10 | val faceImage: Image? = null,
11 | val signatureImage: Image? = null) {
12 |
13 | fun getResultEntriesAsMap() = resultEntries.associateBy { it.key }
14 |
15 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/RecognizerProvider.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition
2 |
3 | import com.microblink.entities.recognizers.Recognizer
4 |
5 | abstract class RecognizerProvider {
6 |
7 | val recognizers by lazy { createRecognizers()}
8 |
9 | protected abstract fun createRecognizers(): List>
10 |
11 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/ResultMergeException.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition
2 |
3 | class ResultMergeException: Throwable()
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/ResultValidator.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition
2 |
3 | import com.microblink.documentscanflow.compareTo
4 | import com.microblink.documentscanflow.recognition.util.StringCombiner
5 | import com.microblink.entities.recognizers.blinkid.CombinedResult
6 | import com.microblink.results.date.Date
7 | import com.microblink.results.date.DateResult
8 |
9 | internal class ResultValidator {
10 |
11 | private val stringCombiner = StringCombiner(null)
12 | var isResultValid = true
13 | private set
14 |
15 | fun match(combinedResult: CombinedResult?): ResultValidator {
16 | isResultValid = combinedResult?.isDocumentDataMatch ?: false
17 | return this
18 | }
19 |
20 | fun match(str1: String?, str2: String?, maxAllowedDistance: Int = 1): ResultValidator {
21 | val isValid = validateString(str1, str2, maxAllowedDistance)
22 | if (!isValid) {
23 | isResultValid = false
24 | }
25 | return this
26 | }
27 |
28 | fun match(date1: DateResult?, date2: DateResult?): ResultValidator {
29 | return match(date1?.date, date2?.date)
30 | }
31 |
32 | fun match(date1: Date?, date2: Date?): ResultValidator {
33 | val isValid = validateDate(date1, date2)
34 | if (!isValid) {
35 | isResultValid = false
36 | }
37 |
38 | return this
39 | }
40 |
41 | private fun validateString(str1: String?, str2: String?, maxAllowedDistance: Int): Boolean {
42 | if (str1 == null || str2 == null) {
43 | if (str1 != str2) {
44 | return false
45 | }
46 | } else if (stringCombiner.calcDistance(str1, str2, false) > maxAllowedDistance) {
47 | return false
48 | }
49 | return true
50 | }
51 |
52 | private fun validateDate(d1: Date?, d2: Date?): Boolean {
53 | if (d1 == null || d2 == null) {
54 | if (d1 != d2) {
55 | return false
56 | }
57 | } else if (d1.compareTo(d1) != 0){
58 | return false
59 | }
60 | return true
61 | }
62 |
63 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/config/DefaultRecognitionConfig.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.config
2 |
3 | class DefaultRecognitionConfig: RecognitionConfig {
4 |
5 | override fun getRecognitionTimeoutSeconds() = 10
6 |
7 | override fun isPartialResultAllowed() = false
8 |
9 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/config/RecognitionConfig.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.config
2 |
3 | interface RecognitionConfig {
4 |
5 | /**
6 | * Returns timeout after which partial results will be returned or scanning will be reset
7 | * depending on isPartialResultAllowed().
8 | * Timeout starts when the first field is read from the card and resets when document side is changed.
9 | */
10 | fun getRecognitionTimeoutSeconds(): Int
11 |
12 | /**
13 | * Returns true if scanning will finish on timeout even if not all fields were read,
14 | * false if scanning will restart until all fields were read.
15 | */
16 | fun isPartialResultAllowed(): Boolean
17 |
18 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/framelistener/FrameGrabberMode.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.framelistener
2 |
3 | enum class FrameGrabberMode {
4 |
5 | NOTHING,
6 | SUCCESS_FRAMES,
7 | ALL_FRAMES
8 |
9 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/framelistener/FrameListener.java:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.framelistener;
2 |
3 | import android.support.annotation.Nullable;
4 | import com.microblink.image.Image;
5 |
6 | public interface FrameListener {
7 |
8 | void onFrameAvailable(@Nullable Image frame);
9 |
10 | FrameListener EMPTY = new FrameListener() {
11 | @Override
12 | public void onFrameAvailable(@Nullable Image frame) {
13 | }
14 | };
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/AustriaDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.entities.recognizers.blinkid.austria.AustriaDlFrontRecognizer
7 |
8 | class AustriaDlRecognition : SingleSideWithId1CardDetectorRecognition() {
9 |
10 | override val recognizer by lazy { AustriaDlFrontRecognizer() }
11 |
12 | override fun extractData(result: AustriaDlFrontRecognizer.Result): String? {
13 | result.apply {
14 | add(LAST_NAME, name)
15 | add(FIRST_NAME, firstName)
16 | add(DATE_OF_BIRTH, dateOfBirth)
17 | add(PLACE_OF_BIRTH, placeOfBirth)
18 | add(DATE_OF_ISSUE, dateOfIssue)
19 | addDateOfExpiry(dateOfExpiry.date)
20 | add(ISSUING_AUTHORITY, issuingAuthority)
21 | add(LICENCE_NUMBER, licenceNumber)
22 | add(VEHICLE_CATEGORIES, vehicleCategories)
23 | }
24 |
25 | return FormattingUtils.formatResultTitle(result.firstName, result.name)
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/AustriaIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.recognition.CombinedRecognition
5 | import com.microblink.documentscanflow.recognition.extract
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
8 | import com.microblink.entities.recognizers.blinkid.austria.AustriaCombinedRecognizer
9 | import com.microblink.entities.recognizers.blinkid.austria.AustriaIdBackRecognizer
10 | import com.microblink.entities.recognizers.blinkid.austria.AustriaIdFrontRecognizer
11 |
12 | class AustriaIdRecognition
13 | : CombinedRecognition() {
14 |
15 | override val frontRecognizer by lazy { AustriaIdFrontRecognizer() }
16 | override val backRecognizer by lazy { AustriaIdBackRecognizer() }
17 | override val combinedRecognizer by lazy { AustriaCombinedRecognizer() }
18 |
19 | override fun extractCombinedResult(combinedResult: AustriaCombinedRecognizer.Result): String? {
20 | add(LAST_NAME, combinedResult.surname)
21 | add(FIRST_NAME, combinedResult.givenName)
22 | add(DOCUMENT_NUMBER, combinedResult.documentNumber)
23 | add(SEX, combinedResult.sex)
24 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
25 | add(HEIGHT, combinedResult.height)
26 | add(EYE_COLOR, combinedResult.eyeColour)
27 | add(PLACE_OF_BIRTH, combinedResult.placeOfBirth)
28 | add(NATIONALITY, combinedResult.nationality)
29 | add(ISSUING_AUTHORITY, combinedResult.issuingAuthority)
30 | add(DATE_OF_ISSUE, combinedResult.dateOfIssuance)
31 | add(PRINCIPAL_RESIDENCE_AT_ISSUANCE, combinedResult.principalResidence)
32 | addDateOfExpiry(combinedResult.dateOfExpiry.date)
33 | return FormattingUtils.formatResultTitle(combinedResult.givenName, combinedResult.surname)
34 | }
35 |
36 | override fun extractFrontResult(frontResult: AustriaIdFrontRecognizer.Result): String? {
37 | add(LAST_NAME, frontResult.surname)
38 | add(FIRST_NAME, frontResult.givenName)
39 | add(DOCUMENT_NUMBER, frontResult.documentNumber)
40 | add(SEX, frontResult.sex)
41 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
42 | return FormattingUtils.formatResultTitle(frontResult.givenName, frontResult.surname)
43 | }
44 |
45 | override fun extractBackResult(backResult: AustriaIdBackRecognizer.Result): String? {
46 | extract(backResult.mrzResult)
47 | add(PLACE_OF_BIRTH, backResult.placeOfBirth)
48 | add(ISSUING_AUTHORITY, backResult.issuingAuthority)
49 | add(DATE_OF_ISSUE, backResult.dateOfIssuance)
50 | return backResult.mrzResult.buildTitle()
51 | }
52 |
53 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/AustriaPassportRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.documentscanflow.recognition.util.StringCombiner
7 | import com.microblink.entities.recognizers.blinkid.austria.AustriaPassportRecognizer
8 |
9 | class AustriaPassportRecognition : SingleSideRecognition() {
10 |
11 | override val recognizer by lazy { AustriaPassportRecognizer() }
12 |
13 | override fun extractData(result: AustriaPassportRecognizer.Result): String? {
14 | val stringCombiner = StringCombiner(StringCombiner.Country.AUSTRIA)
15 | val firstName = stringCombiner.combineMRZString(result.mrzResult.secondaryId, result.givenName)
16 | val lastName = stringCombiner.combineMRZString(result.mrzResult.primaryId, result.surname)
17 |
18 | add(FIRST_NAME, firstName)
19 | add(LAST_NAME, lastName)
20 | add(NATIONALITY, result.nationality)
21 | add(PLACE_OF_BIRTH, result.placeOfBirth)
22 | add(SEX, result.sex)
23 | add(DOCUMENT_NUMBER, result.passportNumber.removeSuffix("<"))
24 | add(DATE_OF_BIRTH, result.dateOfBirth)
25 | add(DATE_OF_ISSUE, result.dateOfIssue)
26 | add(ISSUER, result.issuingAuthority)
27 | addDateOfExpiry(result.dateOfExpiry.date)
28 |
29 | return FormattingUtils.formatResultTitle(firstName, lastName)
30 | }
31 |
32 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/BelgiumIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.recognition.CombinedRecognition
5 | import com.microblink.documentscanflow.recognition.extract
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
8 | import com.microblink.entities.recognizers.blinkid.belgium.BelgiumCombinedRecognizer
9 | import com.microblink.entities.recognizers.blinkid.belgium.BelgiumIdBackRecognizer
10 | import com.microblink.entities.recognizers.blinkid.belgium.BelgiumIdFrontRecognizer
11 |
12 | class BelgiumIdRecognition
13 | : CombinedRecognition() {
14 |
15 | override val frontRecognizer by lazy { BelgiumIdFrontRecognizer() }
16 | override val backRecognizer by lazy { BelgiumIdBackRecognizer() }
17 | override val combinedRecognizer by lazy { BelgiumCombinedRecognizer() }
18 |
19 | override fun extractCombinedResult(combinedResult: BelgiumCombinedRecognizer.Result): String? {
20 | add(LAST_NAME, combinedResult.lastName)
21 | add(FIRST_NAME, combinedResult.firstName)
22 | add(DOCUMENT_NUMBER, combinedResult.cardNumber)
23 | add(SEX, combinedResult.sex)
24 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
25 | add(NATIONALITY, combinedResult.nationality)
26 | add(ISSUER, combinedResult.issuedBy)
27 | addDateOfExpiry(combinedResult.dateOfExpiry.date)
28 |
29 | return FormattingUtils.formatResultTitle(combinedResult.firstName, combinedResult.lastName)
30 | }
31 |
32 | override fun extractFrontResult(frontResult: BelgiumIdFrontRecognizer.Result): String? {
33 | add(DOCUMENT_NUMBER, frontResult.cardNumber)
34 | return null
35 | }
36 |
37 | override fun extractBackResult(backResult: BelgiumIdBackRecognizer.Result): String? {
38 | extract(backResult.mrzResult)
39 | return backResult.mrzResult.buildTitle()
40 | }
41 |
42 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/BruneiIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.isNotEmpty
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.extract
7 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
8 | import com.microblink.entities.recognizers.blinkid.brunei.BruneiIdBackRecognizer
9 | import com.microblink.entities.recognizers.blinkid.brunei.BruneiIdFrontRecognizer
10 |
11 | class BruneiIdRecognition: TwoSideRecognition() {
12 |
13 | override val frontRecognizer by lazy { BruneiIdFrontRecognizer() }
14 | override val backRecognizer by lazy { BruneiIdBackRecognizer() }
15 |
16 | override fun extractFields() {
17 | if (frontResult.isNotEmpty()) {
18 | extractFront(frontResult)
19 | }
20 | if (backResult.isNotEmpty()) {
21 | extractBack(backResult)
22 | }
23 | }
24 |
25 | private fun extractFront(result: BruneiIdFrontRecognizer.Result) {
26 | add(FULL_NAME, result.fullName)
27 | add(DOCUMENT_NUMBER, result.documentNumber)
28 | add(DATE_OF_BIRTH, result.dateOfBirth)
29 | add(PLACE_OF_BIRTH, result.placeOfBirth)
30 | add(SEX, result.sex)
31 | }
32 |
33 | private fun extractBack(result: BruneiIdBackRecognizer.Result) {
34 | extract(result.mrzResult)
35 | add(DATE_OF_ISSUE, result.dateOfIssue)
36 | add(ADDRESS, result.address)
37 | add(RACE, result.race)
38 | }
39 |
40 | override fun getResultTitle(): String? {
41 | if (backResult.isNotEmpty()) {
42 | return backResult.mrzResult.buildTitle()
43 | }
44 | if (frontResult.isNotEmpty()) {
45 | return frontResult.fullName
46 | }
47 | return null
48 | }
49 |
50 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/BruneiMilitaryIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.isNotEmpty
4 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
5 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
6 | import com.microblink.entities.recognizers.blinkid.brunei.BruneiMilitaryIdBackRecognizer
7 | import com.microblink.entities.recognizers.blinkid.brunei.BruneiMilitaryIdFrontRecognizer
8 |
9 | class BruneiMilitaryIdRecognition: TwoSideRecognition() {
10 |
11 | override val frontRecognizer by lazy { BruneiMilitaryIdFrontRecognizer() }
12 | override val backRecognizer by lazy { BruneiMilitaryIdBackRecognizer() }
13 |
14 | override fun extractFields() {
15 | if (frontResult.isNotEmpty()) {
16 | extractFront(frontResult)
17 | }
18 | if (backResult.isNotEmpty()) {
19 | extractBack(backResult)
20 | }
21 | }
22 |
23 | private fun extractFront(result: BruneiMilitaryIdFrontRecognizer.Result) {
24 | add(FULL_NAME, result.fullName)
25 | add(DATE_OF_BIRTH, result.dateOfBirth)
26 | add(RANK, result.rank)
27 | }
28 |
29 | private fun extractBack(result: BruneiMilitaryIdBackRecognizer.Result) {
30 | add(ARMY_NUMBER, result.armyNumber)
31 | add(DATE_OF_ISSUE, result.dateOfIssue)
32 | addDateOfExpiry(result.dateOfExpiry.date)
33 | }
34 |
35 | override fun getResultTitle(): String? {
36 | if (frontResult.isNotEmpty()) {
37 | return frontResult.fullName
38 | }
39 | return null
40 | }
41 |
42 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/BruneiResidencePermitRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.isNotEmpty
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.extract
7 | import com.microblink.entities.recognizers.blinkid.brunei.BruneiResidencePermitBackRecognizer
8 | import com.microblink.entities.recognizers.blinkid.brunei.BruneiResidencePermitFrontRecognizer
9 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
10 |
11 |
12 | class BruneiResidencePermitRecognition :
13 | TwoSideRecognition() {
14 |
15 | override val frontRecognizer by lazy { BruneiResidencePermitFrontRecognizer() }
16 | override val backRecognizer by lazy { BruneiResidencePermitBackRecognizer() }
17 |
18 | override fun extractFields() {
19 | if (frontResult.isNotEmpty()) {
20 | extractFront(frontResult)
21 | }
22 | if (backResult.isNotEmpty()) {
23 | extractBack(backResult)
24 | }
25 | }
26 |
27 | private fun extractFront(result: BruneiResidencePermitFrontRecognizer.Result) {
28 | add(FULL_NAME, result.fullName)
29 | add(DOCUMENT_NUMBER, result.documentNumber)
30 | add(DATE_OF_BIRTH, result.dateOfBirth)
31 | add(PLACE_OF_BIRTH, result.placeOfBirth)
32 | add(SEX, result.sex)
33 | }
34 |
35 | private fun extractBack(result: BruneiResidencePermitBackRecognizer.Result) {
36 | extract(result.mrzResult)
37 | add(DATE_OF_ISSUE, result.dateOfIssue)
38 | add(ADDRESS, result.address)
39 | add(RACE, result.race)
40 | }
41 |
42 | override fun getResultTitle(): String? {
43 | if (backResult.isNotEmpty()) {
44 | return backResult.mrzResult.buildTitle()
45 | }
46 | if (frontResult.isNotEmpty()) {
47 | return frontResult.fullName
48 | }
49 | return null
50 | }
51 |
52 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/BruneiTemporaryResidencePermitRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.isNotEmpty
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.extract
7 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
8 | import com.microblink.entities.recognizers.blinkid.brunei.BruneiTemporaryResidencePermitBackRecognizer
9 | import com.microblink.entities.recognizers.blinkid.brunei.BruneiTemporaryResidencePermitFrontRecognizer
10 |
11 | class BruneiTemporaryResidencePermitRecognition :
12 | TwoSideRecognition() {
13 |
14 | override val frontRecognizer by lazy { BruneiTemporaryResidencePermitFrontRecognizer() }
15 | override val backRecognizer by lazy { BruneiTemporaryResidencePermitBackRecognizer() }
16 |
17 | override fun extractFields() {
18 | if (frontResult.isNotEmpty()) {
19 | extractFront(frontResult)
20 | }
21 | if (backResult.isNotEmpty()) {
22 | extractBack(backResult)
23 | }
24 | }
25 |
26 | private fun extractFront(result: BruneiTemporaryResidencePermitFrontRecognizer.Result) {
27 | add(FULL_NAME, result.fullName)
28 | add(DOCUMENT_NUMBER, result.documentNumber)
29 | add(DATE_OF_BIRTH, result.dateOfBirth)
30 | add(PLACE_OF_BIRTH, result.placeOfBirth)
31 | add(SEX, result.sex)
32 | add(ADDRESS, result.address)
33 | }
34 |
35 | private fun extractBack(result: BruneiTemporaryResidencePermitBackRecognizer.Result) {
36 | extract(result.mrzResult)
37 | add(DATE_OF_ISSUE, result.dateOfIssue)
38 | add(PASSPORT_NUMBER, result.passportNumber)
39 | add(EMPLOYER_ADDRESS, result.address)
40 | }
41 |
42 | override fun getResultTitle(): String? {
43 | if (backResult.isNotEmpty()) {
44 | return backResult.mrzResult.buildTitle()
45 | }
46 | if (frontResult.isNotEmpty()) {
47 | return frontResult.fullName
48 | }
49 | return null
50 | }
51 |
52 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/ColombiaDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
4 | import com.microblink.entities.recognizers.blinkid.colombia.ColombiaDlFrontRecognizer
5 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
6 |
7 | class ColombiaDlRecognition : SingleSideWithId1CardDetectorRecognition() {
8 |
9 | override val recognizer by lazy { ColombiaDlFrontRecognizer() }
10 |
11 | override fun extractData(result: ColombiaDlFrontRecognizer.Result): String? {
12 | result.apply {
13 | add(LICENCE_NUMBER, licenceNumber)
14 | add(FULL_NAME, name)
15 | add(DATE_OF_BIRTH, dateOfBirth)
16 | add(DATE_OF_ISSUE, dateOfIssue)
17 | add(DRIVER_RESTRICTIONS, driverRestrictions)
18 | add(ISSUING_AGENCY, issuingAgency)
19 | }
20 |
21 | return result.name
22 | }
23 |
24 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/ColombiaIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.isNotEmpty
4 | import com.microblink.documentscanflow.recognition.ResultValidator
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
8 | import com.microblink.entities.recognizers.blinkid.colombia.ColombiaIdBackRecognizer
9 | import com.microblink.entities.recognizers.blinkid.colombia.ColombiaIdFrontRecognizer
10 |
11 | class ColombiaIdRecognition
12 | : TwoSideRecognition() {
13 |
14 | override val frontRecognizer by lazy { ColombiaIdFrontRecognizer() }
15 | override val backRecognizer by lazy { ColombiaIdBackRecognizer() }
16 |
17 | override fun createValidator(): ResultValidator {
18 | val frontDocNumberWithoutDots = frontResult.documentNumber.replace(".", "")
19 | return ResultValidator().match(frontDocNumberWithoutDots, backResult.documentNumber)
20 | }
21 |
22 | override fun extractFields() {
23 | if (frontResult.isNotEmpty()) {
24 | extractFront(frontResult)
25 | }
26 |
27 | if (backResult.isNotEmpty()) {
28 | extractBack(backResult)
29 | }
30 | }
31 |
32 | override fun getResultTitle(): String? {
33 | if (frontResult.isNotEmpty()) {
34 | return FormattingUtils.formatResultTitle(frontResult.firstName, frontResult.lastName)
35 | } else if (backResult.isNotEmpty()) {
36 | return FormattingUtils.formatResultTitle(backResult.firstName, backResult.lastName)
37 | }
38 |
39 | return null
40 | }
41 |
42 | private fun extractFront(result: ColombiaIdFrontRecognizer.Result) {
43 | add(FIRST_NAME, result.firstName)
44 | add(LAST_NAME, result.lastName)
45 | add(DOCUMENT_NUMBER, result.documentNumber)
46 | }
47 |
48 | private fun extractBack(result: ColombiaIdBackRecognizer.Result) {
49 | add(FIRST_NAME, result.firstName)
50 | add(LAST_NAME, result.lastName)
51 | add(DOCUMENT_NUMBER, result.documentNumber)
52 | add(SEX, result.sex)
53 | add(DATE_OF_BIRTH, result.birthDate)
54 | }
55 |
56 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/CroatiaIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.documentscanflow.recognition.CombinedRecognition
6 | import com.microblink.documentscanflow.recognition.extract
7 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
8 | import com.microblink.entities.recognizers.blinkid.croatia.CroatiaCombinedRecognizer
9 | import com.microblink.entities.recognizers.blinkid.croatia.CroatiaIdBackRecognizer
10 | import com.microblink.entities.recognizers.blinkid.croatia.CroatiaIdFrontRecognizer
11 |
12 | class CroatiaIdRecognition
13 | : CombinedRecognition() {
14 |
15 | override val frontRecognizer by lazy { CroatiaIdFrontRecognizer() }
16 | override val backRecognizer by lazy { CroatiaIdBackRecognizer() }
17 | override val combinedRecognizer by lazy { CroatiaCombinedRecognizer() }
18 |
19 | override fun extractCombinedResult(combinedResult: CroatiaCombinedRecognizer.Result): String? {
20 | add(LAST_NAME, combinedResult.lastName)
21 | add(FIRST_NAME, combinedResult.firstName)
22 | add(PERSONAL_NUMBER, combinedResult.oib)
23 | add(DOCUMENT_NUMBER, combinedResult.documentNumber)
24 | add(SEX, combinedResult.sex)
25 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
26 | add(ADDRESS, combinedResult.residence)
27 | add(CITIZENSHIP, combinedResult.citizenship)
28 | add(ISSUING_AUTHORITY, combinedResult.issuedBy)
29 | add(DATE_OF_ISSUE, combinedResult.dateOfIssue)
30 | addDateOfExpiry(combinedResult.dateOfExpiry.date)
31 |
32 | return FormattingUtils.formatResultTitle(combinedResult.firstName, combinedResult.lastName)
33 | }
34 |
35 | override fun extractFrontResult(frontResult: CroatiaIdFrontRecognizer.Result): String? {
36 | add(LAST_NAME, frontResult.lastName)
37 | add(FIRST_NAME, frontResult.firstName)
38 | add(DOCUMENT_NUMBER, frontResult.documentNumber)
39 | add(SEX, frontResult.sex)
40 | add(CITIZENSHIP, frontResult.citizenship)
41 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
42 | addDateOfExpiry(frontResult.dateOfExpiry.date)
43 |
44 | return FormattingUtils.formatResultTitle(frontResult.firstName, frontResult.lastName)
45 | }
46 |
47 | override fun extractBackResult(backResult: CroatiaIdBackRecognizer.Result): String? {
48 | add(ADDRESS, backResult.residence)
49 | add(ISSUING_AUTHORITY, backResult.issuedBy)
50 | add(DATE_OF_ISSUE, backResult.dateOfIssue)
51 | extract(backResult.mrzResult)
52 |
53 | return backResult.mrzResult.buildTitle()
54 | }
55 |
56 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/CyprusIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.isNotEmpty
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.extract
7 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.IDENTITY_NUMBER
8 | import com.microblink.entities.recognizers.blinkid.cyprus.CyprusIdBackRecognizer
9 | import com.microblink.entities.recognizers.blinkid.cyprus.CyprusIdFrontRecognizer
10 |
11 | class CyprusIdRecognition : TwoSideRecognition() {
12 |
13 | override val frontRecognizer by lazy { CyprusIdFrontRecognizer() }
14 | override val backRecognizer by lazy { CyprusIdBackRecognizer() }
15 |
16 | override fun extractFields() {
17 | if (frontResult.isNotEmpty()) {
18 | extractFront(frontResult)
19 | }
20 |
21 | if (backResult.isNotEmpty()) {
22 | extractBack(backResult)
23 | }
24 | }
25 |
26 | override fun getResultTitle(): String? {
27 | if (backResult.isNotEmpty()) {
28 | return backResult.mrzResult.buildTitle()
29 | }
30 | return null
31 | }
32 |
33 | private fun extractFront(result: CyprusIdFrontRecognizer.Result) {
34 | add(IDENTITY_NUMBER, result.idNumber)
35 | }
36 |
37 | private fun extractBack(result: CyprusIdBackRecognizer.Result) {
38 | extract(result.mrzResult)
39 | }
40 |
41 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/CyprusOldIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.isNotEmpty
4 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
5 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
6 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
7 | import com.microblink.entities.recognizers.blinkid.cyprus.CyprusOldIdBackRecognizer
8 | import com.microblink.entities.recognizers.blinkid.cyprus.CyprusOldIdFrontRecognizer
9 |
10 | class CyprusOldIdRecognition : TwoSideRecognition() {
11 |
12 | override val frontRecognizer by lazy { CyprusOldIdFrontRecognizer() }
13 | override val backRecognizer by lazy { CyprusOldIdBackRecognizer() }
14 |
15 | override fun extractFields() {
16 | if (frontResult.isNotEmpty()) {
17 | extractFront(frontResult)
18 | }
19 |
20 | if (backResult.isNotEmpty()) {
21 | extractBack(backResult)
22 | }
23 | }
24 |
25 | override fun getResultTitle(): String? {
26 | if (frontResult.isNotEmpty()) {
27 | return FormattingUtils.formatResultTitle(frontResult.name, frontResult.surname)
28 | }
29 | return null
30 | }
31 |
32 | private fun extractFront(result: CyprusOldIdFrontRecognizer.Result) {
33 | add(IDENTITY_NUMBER, result.idNumber)
34 | add(DOCUMENT_NUMBER, result.documentNumber)
35 | add(FIRST_NAME, result.name)
36 | add(LAST_NAME, result.surname)
37 | }
38 |
39 | private fun extractBack(result: CyprusOldIdBackRecognizer.Result) {
40 | add(DATE_OF_BIRTH, result.dateOfBirth)
41 | add(SEX, result.sex)
42 | addDateOfExpiry(result.expiresOn.date)
43 | }
44 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/CzechIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.recognition.CombinedRecognition
5 | import com.microblink.documentscanflow.recognition.extract
6 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
7 | import com.microblink.entities.recognizers.blinkid.czechia.CzechiaCombinedRecognizer
8 | import com.microblink.entities.recognizers.blinkid.czechia.CzechiaIdBackRecognizer
9 | import com.microblink.entities.recognizers.blinkid.czechia.CzechiaIdFrontRecognizer
10 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
11 |
12 | class CzechIdRecognition : CombinedRecognition() {
13 |
14 | override val frontRecognizer by lazy { CzechiaIdFrontRecognizer() }
15 | override val backRecognizer by lazy { CzechiaIdBackRecognizer() }
16 | override val combinedRecognizer by lazy { CzechiaCombinedRecognizer() }
17 |
18 | override fun extractCombinedResult(combinedResult: CzechiaCombinedRecognizer.Result): String? {
19 | add(LAST_NAME, combinedResult.surname)
20 | add(FIRST_NAME, combinedResult.givenNames)
21 | add(DOCUMENT_NUMBER, combinedResult.documentNumber)
22 | add(SEX, combinedResult.sex)
23 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
24 | add(PLACE_OF_BIRTH, combinedResult.placeOfBirth)
25 | add(ADDRESS, combinedResult.permanentStay)
26 | add(PERSONAL_NUMBER, combinedResult.personalNumber)
27 | add(AUTHORITY, combinedResult.authority)
28 | add(NATIONALITY, combinedResult.nationality)
29 | addDateOfExpiry(combinedResult.dateOfExpiry.date)
30 | add(DATE_OF_ISSUE, combinedResult.dateOfIssue)
31 | return FormattingUtils.formatResultTitle(combinedResult.givenNames, combinedResult.surname)
32 | }
33 |
34 | override fun extractFrontResult(frontResult: CzechiaIdFrontRecognizer.Result): String? {
35 | add(LAST_NAME, frontResult.surname)
36 | add(FIRST_NAME, frontResult.givenNames)
37 | add(DOCUMENT_NUMBER, frontResult.documentNumber)
38 | add(SEX, frontResult.sex)
39 | add(PLACE_OF_BIRTH, frontResult.placeOfBirth)
40 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
41 | add(DATE_OF_ISSUE, frontResult.dateOfIssue)
42 | addDateOfExpiry(frontResult.dateOfExpiry.date)
43 | return FormattingUtils.formatResultTitle(frontResult.givenNames, frontResult.surname)
44 | }
45 |
46 | override fun extractBackResult(backResult: CzechiaIdBackRecognizer.Result): String? {
47 | extract(backResult.mrzResult)
48 | add(ADDRESS, backResult.permanentStay)
49 | add(PERSONAL_NUMBER, backResult.personalNumber)
50 | add(ISSUING_AUTHORITY, backResult.authority)
51 | return backResult.mrzResult.buildTitle()
52 | }
53 |
54 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/EgyptIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.DOCUMENT_NUMBER
5 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.NATIONAL_NUMBER
6 | import com.microblink.entities.recognizers.blinkid.egypt.EgyptIdFrontRecognizer
7 |
8 | class EgyptIdRecognition : SingleSideWithId1CardDetectorRecognition() {
9 |
10 | override val recognizer by lazy { EgyptIdFrontRecognizer() }
11 |
12 | override fun extractData(result: EgyptIdFrontRecognizer.Result): String? {
13 | add(DOCUMENT_NUMBER, result.documentNumber)
14 | add(NATIONAL_NUMBER, result.nationalNumber)
15 | return null
16 | }
17 |
18 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/EudlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.entities.recognizers.blinkid.eudl.EudlCountry
7 | import com.microblink.entities.recognizers.blinkid.eudl.EudlRecognizer
8 |
9 | class EudlRecognition(eudlCountry: EudlCountry) : SingleSideWithId1CardDetectorRecognition() {
10 |
11 | override val recognizer by lazy { EudlRecognizer(eudlCountry) }
12 |
13 | override fun extractData(result: EudlRecognizer.Result): String? {
14 | val firstName = result.firstName
15 | val lastName = result.lastName
16 |
17 | add(FIRST_NAME, firstName)
18 | add(LAST_NAME, lastName)
19 | add(ADDRESS, result.address)
20 | add(BIRTH_DATA, result.birthData)
21 | add(DATE_OF_ISSUE, result.issueDate.date)
22 | addDateOfExpiry(result.expiryDate.date)
23 | add(DRIVER_NUMBER, result.driverNumber)
24 | add(ISSUING_AUTHORITY, result.issuingAuthority)
25 |
26 | return FormattingUtils.formatResultTitle(firstName, lastName)
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/GermanyDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.isNotEmpty
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
7 | import com.microblink.entities.recognizers.blinkid.germany.GermanyDlBackRecognizer
8 | import com.microblink.entities.recognizers.blinkid.germany.GermanyDlFrontRecognizer
9 |
10 | class GermanyDlRecognition : TwoSideRecognition() {
11 |
12 | override val frontRecognizer by lazy { GermanyDlFrontRecognizer() }
13 | override val backRecognizer by lazy { GermanyDlBackRecognizer() }
14 |
15 | override fun extractFields() {
16 | if (frontResult.isNotEmpty()) {
17 | val firstName = frontResult.firstName
18 | val lastName = frontResult.lastName
19 |
20 | add(FIRST_NAME, firstName)
21 | add(LAST_NAME, lastName)
22 | add(LICENCE_NUMBER, frontResult.licenceNumber)
23 | add(LICENCE_CATEGORIES, frontResult.licenceCategories)
24 | add(PLACE_OF_BIRTH, frontResult.placeOfBirth)
25 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
26 | add(DATE_OF_ISSUE, frontResult.dateOfIssue)
27 | add(ISSUING_AUTHORITY, frontResult.issuingAuthority)
28 | addDateOfExpiry(frontResult.dateOfExpiry.date)
29 | }
30 | if (backResult.isNotEmpty()) {
31 | add(DATE_OF_ISSUE_FOR_B_CATEGORY, backResult.dateOfIssueB10)
32 | }
33 | }
34 |
35 | override fun getResultTitle(): String? {
36 | return if (frontResult.isNotEmpty()) FormattingUtils.formatResultTitle(frontResult.firstName, frontResult.lastName)
37 | else null
38 | }
39 |
40 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/GermanyIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.recognition.CombinedRecognition
5 | import com.microblink.documentscanflow.recognition.extract
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
8 | import com.microblink.entities.recognizers.blinkid.germany.GermanyCombinedRecognizer
9 | import com.microblink.entities.recognizers.blinkid.germany.GermanyIdBackRecognizer
10 | import com.microblink.entities.recognizers.blinkid.germany.GermanyIdFrontRecognizer
11 |
12 | class GermanyIdRecognition : CombinedRecognition() {
13 |
14 | override val frontRecognizer by lazy { GermanyIdFrontRecognizer() }
15 | override val backRecognizer by lazy { GermanyIdBackRecognizer() }
16 | override val combinedRecognizer by lazy { GermanyCombinedRecognizer() }
17 |
18 | override fun extractCombinedResult(combinedResult: GermanyCombinedRecognizer.Result): String? {
19 | add(LAST_NAME, combinedResult.surname)
20 | add(FIRST_NAME, combinedResult.givenNames)
21 | add(DOCUMENT_NUMBER, combinedResult.documentNumber)
22 | addDateOfExpiry(combinedResult.dateOfExpiry.date)
23 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
24 | add(NATIONALITY, combinedResult.nationality)
25 | add(PLACE_OF_BIRTH, combinedResult.placeOfBirth)
26 | add(EYE_COLOR, combinedResult.colourOfEyes)
27 | add(HEIGHT, combinedResult.height)
28 | add(ADDRESS, combinedResult.address)
29 | add(AUTHORITY, combinedResult.authority)
30 | add(DATE_OF_ISSUE, combinedResult.dateOfIssue)
31 | return FormattingUtils.formatResultTitle(combinedResult.givenNames, combinedResult.surname)
32 | }
33 |
34 | override fun extractFrontResult(frontResult: GermanyIdFrontRecognizer.Result): String? {
35 | add(LAST_NAME, frontResult.surname)
36 | add(FIRST_NAME, frontResult.givenNames)
37 | add(NATIONALITY, frontResult.nationality)
38 | add(PLACE_OF_BIRTH, frontResult.placeOfBirth)
39 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
40 | add(DOCUMENT_NUMBER, frontResult.documentNumber)
41 | addDateOfExpiry(frontResult.dateOfExpiry.date)
42 | return FormattingUtils.formatResultTitle(frontResult.givenNames, frontResult.surname)
43 | }
44 |
45 | override fun extractBackResult(backResult: GermanyIdBackRecognizer.Result): String? {
46 | extract(backResult.mrzResult)
47 | add(AUTHORITY, backResult.authority)
48 | add(DATE_OF_ISSUE, backResult.dateOfIssue)
49 | add(ADDRESS, backResult.fullAddress)
50 | return backResult.mrzResult.buildTitle()
51 | }
52 |
53 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/GermanyOldIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.isNotEmpty
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.buildId2VerticalCardDetectorRecognizer
7 | import com.microblink.documentscanflow.recognition.extract
8 | import com.microblink.entities.recognizers.blinkid.germany.GermanyIdOldRecognizer
9 | import com.microblink.entities.recognizers.detector.DetectorRecognizer
10 |
11 | class GermanyOldIdRecognition : TwoSideRecognition() {
12 |
13 | override val frontRecognizer by lazy { GermanyIdOldRecognizer() }
14 | override val backRecognizer by lazy {
15 | buildId2VerticalCardDetectorRecognizer()
16 | }
17 |
18 | override fun extractFields() {
19 | if (frontResult.isNotEmpty()) extract(frontResult.mrzResult)
20 | }
21 |
22 | override fun getResultTitle(): String? {
23 | return if (frontResult.isNotEmpty()) frontResult.mrzResult.buildTitle()
24 | else null
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/HongKongIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.entities.recognizers.blinkid.hongkong.HongKongIdFrontRecognizer
6 |
7 | class HongKongIdRecognition : SingleSideWithId1CardDetectorRecognition() {
8 |
9 | override val recognizer by lazy { HongKongIdFrontRecognizer() }
10 |
11 | override fun extractData(result: HongKongIdFrontRecognizer.Result): String? {
12 | val fullName = result.fullName
13 |
14 | add(FULL_NAME, fullName)
15 | add(DOCUMENT_NUMBER, result.documentNumber)
16 | add(SEX, result.sex)
17 | add(DATE_OF_BIRTH, result.dateOfBirth)
18 | add(DATE_OF_ISSUE, result.dateOfIssue)
19 | add(RESIDENTIAL_STATUS, result.residentialStatus)
20 |
21 | return fullName
22 | }
23 |
24 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/IndonesiaIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.entities.recognizers.blinkid.indonesia.IndonesiaIdFrontRecognizer
6 |
7 | class IndonesiaIdRecognition : SingleSideRecognition() {
8 |
9 | override val recognizer by lazy { IndonesiaIdFrontRecognizer() }
10 |
11 | override fun extractData(result: IndonesiaIdFrontRecognizer.Result): String? {
12 | add(PROVINCE, result.province)
13 | add(CITY, result.city)
14 | add(DOCUMENT_NUMBER, result.documentNumber)
15 | add(FULL_NAME, result.name)
16 | add(PLACE_OF_BIRTH, result.placeOfBirth)
17 | add(DATE_OF_BIRTH, result.dateOfBirth)
18 | add(SEX, result.sex)
19 | add(ADDRESS, result.address)
20 | add(RELIGION, result.religion)
21 | add(MARITAL_STATUS, result.maritalStatus)
22 | add(OCCUPATION, result.occupation)
23 | add(CITIZENSHIP, result.citizenship)
24 | addDateOfExpiry(result.dateOfExpiry.date)
25 | add(DATE_OF_EXPIRY_PERMANENT, result.isDateOfExpiryPermanent)
26 |
27 | return result.name
28 | }
29 |
30 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/IrelandDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.entities.recognizers.blinkid.ireland.IrelandDlFrontRecognizer
7 |
8 | class IrelandDlRecognition : SingleSideWithId1CardDetectorRecognition() {
9 |
10 | override val recognizer by lazy { IrelandDlFrontRecognizer() }
11 |
12 | override fun extractData(result: IrelandDlFrontRecognizer.Result): String? {
13 | result.apply {
14 | add(LAST_NAME, surname)
15 | add(FIRST_NAME, firstName)
16 | add(DATE_OF_BIRTH, dateOfBirth)
17 | add(PLACE_OF_BIRTH, placeOfBirth)
18 | add(DATE_OF_ISSUE, dateOfIssue)
19 | add(ISSUER, issuedBy)
20 | addDateOfExpiry(dateOfExpiry.date)
21 | add(LICENCE_NUMBER, licenceNumber)
22 | add(ADDRESS, address)
23 | add(LICENCE_CATEGORIES, licenceCategories)
24 | }
25 |
26 | return FormattingUtils.formatResultTitle(result.firstName, result.surname)
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/ItalyDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.entities.recognizers.blinkid.italy.ItalyDlFrontRecognizer
7 |
8 | class ItalyDlRecognition : SingleSideWithId1CardDetectorRecognition() {
9 |
10 | override val recognizer by lazy { ItalyDlFrontRecognizer() }
11 |
12 | override fun extractData(result: ItalyDlFrontRecognizer.Result): String? {
13 | result.apply {
14 | add(LAST_NAME, surname)
15 | add(FIRST_NAME, givenName)
16 | add(DATE_OF_BIRTH, dateOfBirth)
17 | add(PLACE_OF_BIRTH, placeOfBirth)
18 | add(DATE_OF_ISSUE, dateOfIssue)
19 | add(ISSUING_AUTHORITY, issuingAuthority)
20 | addDateOfExpiry(dateOfExpiry.date)
21 | add(LICENCE_NUMBER, licenceNumber)
22 | add(LICENCE_CATEGORIES, licenceCategories)
23 | add(ADDRESS, address)
24 | }
25 |
26 | return FormattingUtils.formatResultTitle(result.givenName, result.surname)
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/JordanIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.CombinedRecognition
4 | import com.microblink.documentscanflow.recognition.extract
5 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
6 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
7 | import com.microblink.documentscanflow.sanitizeMRZString
8 | import com.microblink.entities.recognizers.blinkid.jordan.JordanCombinedRecognizer
9 | import com.microblink.entities.recognizers.blinkid.jordan.JordanIdBackRecognizer
10 | import com.microblink.entities.recognizers.blinkid.jordan.JordanIdFrontRecognizer
11 |
12 | class JordanIdRecognition :
13 | CombinedRecognition() {
14 |
15 | override val frontRecognizer by lazy { JordanIdFrontRecognizer() }
16 | override val backRecognizer by lazy { JordanIdBackRecognizer() }
17 | override val combinedRecognizer by lazy { JordanCombinedRecognizer() }
18 |
19 | override fun extractCombinedResult(combinedResult: JordanCombinedRecognizer.Result): String? {
20 | add(FULL_NAME, combinedResult.name)
21 | add(NATIONAL_NUMBER, combinedResult.nationalNumber)
22 | add(SEX, combinedResult.sex)
23 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
24 | add(NATIONALITY, combinedResult.nationality)
25 | add(DOCUMENT_NUMBER, combinedResult.documentNumber)
26 | add(ISSUER, combinedResult.issuedBy)
27 | addDateOfExpiry(combinedResult.dateOfExpiry.date)
28 | return combinedResult.name
29 | }
30 |
31 | override fun extractFrontResult(frontResult: JordanIdFrontRecognizer.Result): String? {
32 | add(FULL_NAME, frontResult.name)
33 | add(NATIONAL_NUMBER, frontResult.nationalNumber)
34 | add(SEX, frontResult.sex)
35 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
36 | return frontResult.name
37 | }
38 |
39 | override fun extractBackResult(backResult: JordanIdBackRecognizer.Result): String? {
40 | add(NATIONALITY, backResult.mrzResult.nationality)
41 | add(DOCUMENT_NUMBER, backResult.mrzResult.documentNumber.sanitizeMRZString())
42 | add(ISSUER, backResult.mrzResult.issuer)
43 | addDateOfExpiry(backResult.mrzResult.dateOfExpiry.date)
44 | extract(backResult.mrzResult)
45 | return FormattingUtils.formatResultTitle(backResult.mrzResult.primaryId, backResult.mrzResult.secondaryId)
46 | }
47 |
48 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/KuwaitIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.isNotEmpty
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.extract
7 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
8 | import com.microblink.entities.recognizers.blinkid.kuwait.KuwaitIdBackRecognizer
9 | import com.microblink.entities.recognizers.blinkid.kuwait.KuwaitIdFrontRecognizer
10 |
11 | class KuwaitIdRecognition : TwoSideRecognition() {
12 |
13 | override val frontRecognizer by lazy { KuwaitIdFrontRecognizer() }
14 | override val backRecognizer by lazy { KuwaitIdBackRecognizer() }
15 |
16 | override fun setupRecognizers() {
17 | backRecognizer.setExtractSerialNo(true)
18 | }
19 |
20 | override fun extractFields() {
21 | if (frontResult.isNotEmpty()) {
22 | extractFrontSide()
23 | }
24 | if (backResult.isNotEmpty()) {
25 | extractBackSide()
26 | }
27 | }
28 |
29 | override fun getResultTitle(): String? {
30 | if (frontResult.isNotEmpty()) {
31 | return frontResult.name
32 | } else if (backResult.isNotEmpty()) {
33 | return backResult.mrzResult.buildTitle()
34 | }
35 |
36 | return null
37 | }
38 |
39 | private fun extractBackSide() {
40 | extract(backResult.mrzResult)
41 | add(SERIAL_NUMBER, backResult.serialNo)
42 | }
43 |
44 | private fun extractFrontSide() {
45 | add(CIVIL_ID_NUMBER, frontResult.civilIdNumber)
46 | add(FULL_NAME, frontResult.name)
47 | add(NATIONALITY, frontResult.nationality)
48 | add(SEX, frontResult.sex)
49 | add(DATE_OF_BIRTH, frontResult.birthDate)
50 | addDateOfExpiry(frontResult.expiryDate.date)
51 | }
52 |
53 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/MalaysiaDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.entities.recognizers.blinkid.malaysia.MalaysiaDlFrontRecognizer
6 |
7 | class MalaysiaDlRecognition : SingleSideWithId1CardDetectorRecognition() {
8 |
9 | override val recognizer by lazy { MalaysiaDlFrontRecognizer() }
10 |
11 | override fun extractData(result: MalaysiaDlFrontRecognizer.Result): String? {
12 | add(FULL_NAME, result.name)
13 | add(IDENTITY_NUMBER, result.identityNumber)
14 | add(NATIONALITY, result.nationality)
15 | add(CLASS, result.dlClass)
16 | add(DATE_OF_ISSUE, result.validFrom)
17 | addDateOfExpiry(result.validUntil.date)
18 | add(ADDRESS, result.fullAddress)
19 |
20 | return result.name
21 | }
22 |
23 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/MalaysiaIkadRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.entities.recognizers.blinkid.malaysia.MalaysiaIkadFrontRecognizer
6 |
7 | class MalaysiaIkadRecognition : SingleSideRecognition() {
8 |
9 | override val recognizer by lazy { MalaysiaIkadFrontRecognizer() }
10 |
11 | override fun extractData(result: MalaysiaIkadFrontRecognizer.Result): String? {
12 | add(FULL_NAME, result.name)
13 | add(ADDRESS, result.address)
14 | add(FACULTY_ADDRESS, result.facultyAddress)
15 | add(DATE_OF_BIRTH, result.dateOfBirth)
16 | add(EMPLOYER, result.employer)
17 | addDateOfExpiry(result.dateOfExpiry.date)
18 | add(NATIONALITY, result.nationality)
19 | add(SECTOR, result.sector)
20 | add(SEX, result.gender)
21 |
22 | return result.name
23 | }
24 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/MalaysiaKasRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.isNotEmpty
4 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
5 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
6 | import com.microblink.entities.recognizers.blinkid.malaysia.MalaysiaMyKadBackRecognizer
7 | import com.microblink.entities.recognizers.blinkid.malaysia.MalaysiaMyKasFrontRecognizer
8 |
9 | class MalaysiaKasRecognition: TwoSideRecognition() {
10 |
11 | override val frontRecognizer by lazy { MalaysiaMyKasFrontRecognizer() }
12 | override val backRecognizer by lazy { MalaysiaMyKadBackRecognizer() }
13 |
14 | override fun extractFields() {
15 | if (frontResult.isNotEmpty()) {
16 | extractFrontSide()
17 | }
18 | if (backResult.isNotEmpty()) {
19 | extractBackSide()
20 | }
21 | }
22 |
23 | private fun extractFrontSide() {
24 | add(FULL_NAME, frontResult.fullName)
25 | add(NRIC_NUMBER, frontResult.nric)
26 | add(DATE_OF_BIRTH, frontResult.birthDate)
27 | add(ADDRESS, frontResult.fullAddress)
28 | add(SEX, frontResult.sex)
29 | add(RELIGION, frontResult.religion)
30 | }
31 |
32 | private fun extractBackSide() {
33 | add(NRIC_NUMBER, backResult.nric)
34 | add(DATE_OF_BIRTH, backResult.dateOfBirth)
35 | }
36 |
37 | override fun getResultTitle(): String? {
38 | if (frontResult.isNotEmpty()) {
39 | return frontResult.fullName
40 | } else if (backResult.isNotEmpty()) {
41 | return backResult.nric
42 | }
43 | return null
44 | }
45 |
46 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/MalaysiaMyKadRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.isNotEmpty
4 | import com.microblink.documentscanflow.recognition.ResultValidator
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.entities.recognizers.blinkid.malaysia.MalaysiaMyKadBackRecognizer
8 | import com.microblink.entities.recognizers.blinkid.malaysia.MalaysiaMyKadFrontRecognizer
9 |
10 | class MalaysiaMyKadRecognition
11 | : TwoSideRecognition() {
12 |
13 | override val frontRecognizer by lazy { MalaysiaMyKadFrontRecognizer() }
14 | override val backRecognizer by lazy { MalaysiaMyKadBackRecognizer() }
15 |
16 | override fun createValidator(): ResultValidator {
17 | return ResultValidator()
18 | .match(frontResult.nric, backResult.nric)
19 | .match(frontResult.birthDate.date, backResult.dateOfBirth.date)
20 | }
21 |
22 | override fun extractFields() {
23 | if (frontResult.isNotEmpty()) {
24 | extractFrontSide()
25 | }
26 | if (backResult.isNotEmpty()) {
27 | extractBackSide()
28 | }
29 | }
30 |
31 | override fun getResultTitle(): String? {
32 | return when {
33 | frontResult.isNotEmpty() -> frontResult.fullName
34 | backResult.isNotEmpty() -> backResult.nric
35 | else -> null
36 | }
37 | }
38 |
39 | private fun extractFrontSide() {
40 | add(FULL_NAME, frontResult.fullName)
41 | add(NRIC_NUMBER, frontResult.nric)
42 | add(DATE_OF_BIRTH, frontResult.birthDate)
43 | add(ADDRESS, frontResult.fullAddress)
44 | add(SEX, frontResult.sex)
45 | add(RELIGION, frontResult.religion)
46 | }
47 |
48 | private fun extractBackSide() {
49 | add(NRIC_NUMBER, backResult.nric)
50 | add(DATE_OF_BIRTH, backResult.dateOfBirth)
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/MalaysiaPrRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
5 | import com.microblink.entities.recognizers.blinkid.malaysia.MalaysiaMyPrFrontRecognizer
6 |
7 | class MalaysiaPrRecognition: SingleSideWithId1CardDetectorRecognition() {
8 |
9 | override val recognizer by lazy { MalaysiaMyPrFrontRecognizer() }
10 |
11 | override fun extractData(result: MalaysiaMyPrFrontRecognizer.Result): String? {
12 | add(FULL_NAME, result.fullName)
13 | add(DATE_OF_BIRTH, result.birthDate)
14 | add(SEX, result.sex)
15 | add(RELIGION, result.religion)
16 | add(NRIC_NUMBER, result.nric)
17 | add(ADDRESS, result.fullAddress)
18 | return result.fullName
19 | }
20 |
21 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/MalaysiaTenteraRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
5 | import com.microblink.entities.recognizers.blinkid.malaysia.MalaysiaMyTenteraFrontRecognizer
6 |
7 | class MalaysiaTenteraRecognition : SingleSideWithId1CardDetectorRecognition() {
8 |
9 | override val recognizer by lazy { MalaysiaMyTenteraFrontRecognizer() }
10 |
11 | override fun extractData(result: MalaysiaMyTenteraFrontRecognizer.Result): String? {
12 | add(FULL_NAME, result.fullName)
13 | add(ARMY_NUMBER, result.armyNumber)
14 | add(ADDRESS, result.fullAddress)
15 | add(DATE_OF_BIRTH, result.birthDate)
16 | add(SEX, result.sex)
17 | add(RELIGION, result.religion)
18 | add(NRIC_NUMBER, result.nric)
19 |
20 | return result.fullName
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/MexicoIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
5 | import com.microblink.entities.recognizers.blinkid.mexico.MexicoVoterIdFrontRecognizer
6 |
7 | class MexicoIdRecognition : SingleSideWithId1CardDetectorRecognition() {
8 |
9 | override val recognizer by lazy { MexicoVoterIdFrontRecognizer() }
10 |
11 | override fun extractData(result: MexicoVoterIdFrontRecognizer.Result): String? {
12 | add(FULL_NAME, result.fullName)
13 | add(ADDRESS, result.address)
14 | add(CURP, result.curp)
15 | add(DATE_OF_BIRTH, result.dateOfBirth)
16 | add(SEX, result.sex)
17 |
18 | return result.fullName
19 | }
20 |
21 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/MoroccoIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.isNotEmpty
4 | import com.microblink.documentscanflow.recognition.ResultValidator
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
8 | import com.microblink.entities.recognizers.blinkid.morocco.MoroccoIdBackRecognizer
9 | import com.microblink.entities.recognizers.blinkid.morocco.MoroccoIdFrontRecognizer
10 |
11 | class MoroccoIdRecognition : TwoSideRecognition() {
12 |
13 | override val frontRecognizer by lazy { MoroccoIdFrontRecognizer() }
14 | override val backRecognizer by lazy { MoroccoIdBackRecognizer() }
15 |
16 | override fun createValidator() = ResultValidator()
17 | .match(frontResult.documentNumber, backResult.documentNumber)
18 | .match(frontResult.dateOfExpiry, backResult.dateOfExpiry)
19 | .match(frontResult.sex, backResult.sex)
20 |
21 | override fun extractFields() {
22 | if (frontResult.isNotEmpty()) {
23 | extractFrontSide()
24 | }
25 | if (backResult.isNotEmpty()) {
26 | extractBackSide()
27 | }
28 | }
29 |
30 | override fun getResultTitle() =
31 | when {
32 | frontResult.isNotEmpty() -> FormattingUtils.formatResultTitle(frontResult.name, frontResult.surname)
33 | else -> null
34 | }
35 |
36 | private fun extractFrontSide() {
37 | frontResult.apply {
38 | add(FIRST_NAME, name)
39 | add(LAST_NAME, surname)
40 | add(DOCUMENT_NUMBER, documentNumber)
41 | add(SEX, sex)
42 | add(DATE_OF_BIRTH, dateOfBirth)
43 | add(PLACE_OF_BIRTH, placeOfBirth)
44 | addDateOfExpiry(dateOfExpiry.date)
45 | }
46 | }
47 |
48 | private fun extractBackSide() {
49 | backResult.apply {
50 | add(DOCUMENT_NUMBER, documentNumber)
51 | addDateOfExpiry(dateOfExpiry.date)
52 | add(ADDRESS, address)
53 | add(CIVIL_STATUS_NUMBER, civilStatusNumber)
54 | add(SEX, sex)
55 | }
56 | }
57 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/NewZealandDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.entities.recognizers.blinkid.newzealand.NewZealandDlFrontRecognizer
7 |
8 | class NewZealandDlRecognition : SingleSideWithId1CardDetectorRecognition() {
9 |
10 | override val recognizer by lazy { NewZealandDlFrontRecognizer() }
11 |
12 | override fun extractData(result: NewZealandDlFrontRecognizer.Result): String? {
13 | val firstName = result.firstNames
14 | val lastName = result.surname
15 |
16 | add(FIRST_NAME, firstName)
17 | add(LAST_NAME, lastName)
18 | add(DATE_OF_BIRTH, result.dateOfBirth)
19 | add(DOCUMENT_NUMBER, result.licenseNumber)
20 | add(DATE_OF_ISSUE, result.dateOfIssue)
21 | addDateOfExpiry(result.dateOfExpiry.date)
22 | add(ADDRESS, result.address)
23 |
24 | return FormattingUtils.formatResultTitle(firstName, lastName)
25 | }
26 |
27 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/NigeriaDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | class NigeriaDlRecognition: UsdlRecognition()
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/NigeriaVoterIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.isEmpty
4 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
5 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey
6 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
7 | import com.microblink.entities.recognizers.blinkid.documentface.DocumentFaceRecognizer
8 | import com.microblink.entities.recognizers.blinkid.nigeria.NigeriaVoterIdBackRecognizer
9 |
10 | class NigeriaVoterIdRecognition: TwoSideRecognition() {
11 |
12 | override val frontRecognizer by lazy { DocumentFaceRecognizer() }
13 | override val backRecognizer by lazy { NigeriaVoterIdBackRecognizer() }
14 |
15 | override fun extractFields() {
16 | if (backResult.isEmpty()) return
17 | add(ResultKey.FIRST_NAME, backResult.firstName)
18 | add(ResultKey.LAST_NAME, backResult.surname)
19 | add(ResultKey.ADDRESS, backResult.address)
20 | add(ResultKey.SEX, backResult.sex)
21 | add(ResultKey.BARCODE_DATA, backResult.rawBarcodeData)
22 | }
23 |
24 | override fun getResultTitle() =
25 | if (backResult.isEmpty()) null
26 | else FormattingUtils.formatResultTitle(backResult.firstName, backResult.surname)
27 |
28 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/PolandIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.recognition.CombinedRecognition
5 | import com.microblink.documentscanflow.recognition.extract
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
8 | import com.microblink.entities.recognizers.blinkid.poland.PolandCombinedRecognizer
9 | import com.microblink.entities.recognizers.blinkid.poland.PolandIdBackRecognizer
10 | import com.microblink.entities.recognizers.blinkid.poland.PolandIdFrontRecognizer
11 |
12 | class PolandIdRecognition: CombinedRecognition() {
13 |
14 | override val frontRecognizer by lazy { PolandIdFrontRecognizer() }
15 | override val backRecognizer by lazy { PolandIdBackRecognizer() }
16 | override val combinedRecognizer by lazy { PolandCombinedRecognizer() }
17 |
18 | override fun extractCombinedResult(combinedResult: PolandCombinedRecognizer.Result): String? {
19 | add(LAST_NAME, combinedResult.surname)
20 | add(FIRST_NAME, combinedResult.givenNames)
21 | add(FAMILY_NAME, combinedResult.familyName)
22 | add(PARENT_NAMES, combinedResult.parentsGivenNames)
23 | add(PERSONAL_NUMBER, combinedResult.personalNumber)
24 | add(DOCUMENT_NUMBER, combinedResult.documentNumber)
25 | add(SEX, combinedResult.sex)
26 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
27 | add(NATIONALITY, combinedResult.nationality)
28 | add(ISSUER, combinedResult.issuedBy)
29 | addDateOfExpiry(combinedResult.dateOfExpiry.date)
30 | return FormattingUtils.formatResultTitle(combinedResult.givenNames, combinedResult.surname)
31 | }
32 |
33 | override fun extractFrontResult(frontResult: PolandIdFrontRecognizer.Result): String? {
34 | add(LAST_NAME, frontResult.surname)
35 | add(FIRST_NAME, frontResult.givenNames)
36 | add(SEX, frontResult.sex)
37 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
38 | return FormattingUtils.formatResultTitle(frontResult.givenNames, frontResult.surname)
39 | }
40 |
41 | override fun extractBackResult(backResult: PolandIdBackRecognizer.Result): String? {
42 | extract(backResult.mrzResult)
43 | return backResult.mrzResult.buildTitle()
44 | }
45 |
46 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/RomaniaIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.recognition.SingleSideRecognition
5 | import com.microblink.documentscanflow.recognition.extract
6 | import com.microblink.entities.recognizers.blinkid.romania.RomaniaIdFrontRecognizer
7 |
8 | class RomaniaIdRecognition: SingleSideRecognition() {
9 |
10 | override val recognizer by lazy { RomaniaIdFrontRecognizer() }
11 |
12 | override fun setupRecognizers() {
13 | recognizer.apply {
14 | setExtractAddress(false)
15 | setExtractFirstName(false)
16 | setExtractSurname(false)
17 | setExtractIssuedBy(false)
18 | setExtractPlaceOfBirth(false)
19 | setExtractDateOfIssue(false)
20 | setExtractDateOfExpiry(false)
21 | setExtractSex(false)
22 | }
23 | }
24 |
25 | override fun extractData(result: RomaniaIdFrontRecognizer.Result): String? {
26 | extract(result.mrzResult)
27 | return result.mrzResult.buildTitle()
28 | }
29 |
30 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/SingaporeDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
5 | import com.microblink.entities.recognizers.blinkid.singapore.SingaporeDlFrontRecognizer
6 |
7 | class SingaporeDlRecognition : SingleSideWithId1CardDetectorRecognition() {
8 |
9 | override val recognizer by lazy { SingaporeDlFrontRecognizer() }
10 |
11 | override fun extractData(result: SingaporeDlFrontRecognizer.Result): String? {
12 | add(DOCUMENT_NUMBER, result.licenceNumber)
13 | add(FULL_NAME, result.name)
14 | add(DATE_OF_BIRTH, result.birthDate)
15 | add(DATE_OF_ISSUE, result.issueDate)
16 | addDateOfExpiry(result.validTill.date)
17 |
18 | return result.name
19 | }
20 |
21 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/SingaporeIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.CombinedRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.entities.recognizers.blinkid.singapore.SingaporeCombinedRecognizer
6 | import com.microblink.entities.recognizers.blinkid.singapore.SingaporeIdBackRecognizer
7 | import com.microblink.entities.recognizers.blinkid.singapore.SingaporeIdFrontRecognizer
8 |
9 | class SingaporeIdRecognition: CombinedRecognition() {
10 |
11 | override val frontRecognizer by lazy { SingaporeIdFrontRecognizer() }
12 | override val backRecognizer by lazy { SingaporeIdBackRecognizer() }
13 | override val combinedRecognizer by lazy { SingaporeCombinedRecognizer() }
14 |
15 | override fun extractCombinedResult(combinedResult: SingaporeCombinedRecognizer.Result): String? {
16 | add(DOCUMENT_NUMBER, combinedResult.identityCardNumber)
17 | add(FULL_NAME, combinedResult.name)
18 | add(RACE, combinedResult.race)
19 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
20 | add(SEX, combinedResult.sex)
21 | add(COUNTRY_OF_BIRTH, combinedResult.countryOfBirth)
22 | add(BLOOD_GROUP, combinedResult.bloodGroup)
23 | add(DATE_OF_ISSUE, combinedResult.dateOfIssue)
24 | add(ADDRESS, combinedResult.address)
25 | return combinedResult.name
26 | }
27 |
28 | override fun extractFrontResult(frontResult: SingaporeIdFrontRecognizer.Result): String? {
29 | add(DOCUMENT_NUMBER, frontResult.identityCardNumber)
30 | add(FULL_NAME, frontResult.name)
31 | add(RACE, frontResult.race)
32 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
33 | add(SEX, frontResult.sex)
34 | add(COUNTRY_OF_BIRTH, frontResult.countryOfBirth)
35 | return frontResult.name
36 | }
37 |
38 | override fun extractBackResult(backResult: SingaporeIdBackRecognizer.Result): String? {
39 | add(DOCUMENT_NUMBER, backResult.cardNumber)
40 | add(DATE_OF_ISSUE, backResult.dateOfIssue)
41 | add(ADDRESS, backResult.address)
42 | return null
43 | }
44 |
45 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/SlovakiaIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.recognition.CombinedRecognition
5 | import com.microblink.documentscanflow.recognition.extract
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
8 | import com.microblink.entities.recognizers.blinkid.slovakia.SlovakiaCombinedRecognizer
9 | import com.microblink.entities.recognizers.blinkid.slovakia.SlovakiaIdBackRecognizer
10 | import com.microblink.entities.recognizers.blinkid.slovakia.SlovakiaIdFrontRecognizer
11 |
12 | class SlovakiaIdRecognition:
13 | CombinedRecognition() {
14 |
15 | override val frontRecognizer by lazy { SlovakiaIdFrontRecognizer() }
16 | override val backRecognizer by lazy { SlovakiaIdBackRecognizer() }
17 | override val combinedRecognizer by lazy { SlovakiaCombinedRecognizer() }
18 |
19 | override fun extractCombinedResult(combinedResult: SlovakiaCombinedRecognizer.Result): String? {
20 | add(LAST_NAME, combinedResult.lastName)
21 | add(FIRST_NAME, combinedResult.firstName)
22 | add(NATIONALITY, combinedResult.nationality)
23 | add(SEX, combinedResult.sex)
24 | add(DOCUMENT_NUMBER, combinedResult.documentNumber)
25 | add(SPECIAL_REMARKS, combinedResult.specialRemarks)
26 | add(PERSONAL_NUMBER, combinedResult.personalNumber)
27 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
28 | add(PLACE_OF_BIRTH, combinedResult.placeOfBirth)
29 | add(SURNAME_AT_BIRTH, combinedResult.surnameAtBirth)
30 | add(ADDRESS, combinedResult.address)
31 | add(ISSUING_AUTHORITY, combinedResult.issuedBy)
32 | add(DATE_OF_ISSUE, combinedResult.dateOfIssue)
33 | addDateOfExpiry(combinedResult.dateOfExpiry.date)
34 | return FormattingUtils.formatResultTitle(combinedResult.firstName, combinedResult.lastName)
35 | }
36 |
37 | override fun extractFrontResult(frontResult: SlovakiaIdFrontRecognizer.Result): String? {
38 | add(LAST_NAME, frontResult.lastName)
39 | add(FIRST_NAME, frontResult.firstName)
40 | add(NATIONALITY, frontResult.nationality)
41 | add(SEX, frontResult.sex)
42 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
43 | add(PERSONAL_NUMBER, frontResult.personalNumber)
44 | add(DOCUMENT_NUMBER, frontResult.documentNumber)
45 | add(ISSUER, frontResult.issuedBy)
46 | addDateOfExpiry(frontResult.dateOfExpiry.date)
47 | add(DATE_OF_ISSUE, frontResult.dateOfIssue)
48 | return FormattingUtils.formatResultTitle(frontResult.firstName, frontResult.lastName)
49 | }
50 |
51 | override fun extractBackResult(backResult: SlovakiaIdBackRecognizer.Result): String? {
52 | add(ADDRESS, backResult.address)
53 | add(PLACE_OF_BIRTH, backResult.placeOfBirth)
54 | extract(backResult.mrzResult)
55 | return backResult.mrzResult.buildTitle()
56 | }
57 |
58 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/SloveniaIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.recognition.CombinedRecognition
5 | import com.microblink.documentscanflow.recognition.extract
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
8 | import com.microblink.entities.recognizers.blinkid.slovenia.SloveniaCombinedRecognizer
9 | import com.microblink.entities.recognizers.blinkid.slovenia.SloveniaIdBackRecognizer
10 | import com.microblink.entities.recognizers.blinkid.slovenia.SloveniaIdFrontRecognizer
11 |
12 | class SloveniaIdRecognition: CombinedRecognition() {
13 |
14 | override val frontRecognizer by lazy { SloveniaIdFrontRecognizer() }
15 | override val backRecognizer by lazy { SloveniaIdBackRecognizer() }
16 | override val combinedRecognizer by lazy { SloveniaCombinedRecognizer() }
17 |
18 | override fun extractCombinedResult(combinedResult: SloveniaCombinedRecognizer.Result): String? {
19 | add(LAST_NAME, combinedResult.surname)
20 | add(FIRST_NAME, combinedResult.givenNames)
21 | add(IDENTITY_NUMBER, combinedResult.documentNumber)
22 | add(SEX, combinedResult.sex)
23 | add(SEX, combinedResult.sex)
24 | add(DATE_OF_BIRTH, combinedResult.dateOfBirth)
25 | add(ADDRESS, combinedResult.address)
26 | add(NATIONALITY, combinedResult.nationality)
27 | addDateOfExpiry(combinedResult.dateOfExpiry.date)
28 | add(DATE_OF_ISSUE, combinedResult.dateOfIssue)
29 | add(ISSUING_AUTHORITY, combinedResult.administrativeUnit)
30 | add(DATE_OF_EXPIRY_PERMANENT, combinedResult.isDateOfExpiryPermanent)
31 | return FormattingUtils.formatResultTitle(combinedResult.givenNames, combinedResult.surname)
32 | }
33 |
34 | override fun extractFrontResult(frontResult: SloveniaIdFrontRecognizer.Result): String? {
35 | add(LAST_NAME, frontResult.surname)
36 | add(FIRST_NAME, frontResult.givenNames)
37 | add(SEX, frontResult.sex)
38 | add(NATIONALITY, frontResult.nationality)
39 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
40 | addDateOfExpiry(frontResult.dateOfExpiry.date)
41 | add(DATE_OF_EXPIRY_PERMANENT, frontResult.isDateOfExpiryPermanent)
42 | return FormattingUtils.formatResultTitle(frontResult.givenNames, frontResult.surname)
43 | }
44 |
45 | override fun extractBackResult(backResult: SloveniaIdBackRecognizer.Result): String? {
46 | extract(backResult.mrzResult)
47 | add(ADDRESS, backResult.address)
48 | add(AUTHORITY, backResult.administrativeUnit)
49 | add(DATE_OF_ISSUE, backResult.dateOfIssue)
50 | return backResult.mrzResult.buildTitle()
51 | }
52 |
53 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/SpainDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.entities.recognizers.blinkid.spain.SpainDlFrontRecognizer
7 |
8 | class SpainDlRecognition : SingleSideWithId1CardDetectorRecognition() {
9 |
10 | override val recognizer by lazy { SpainDlFrontRecognizer() }
11 |
12 | override fun extractData(result: SpainDlFrontRecognizer.Result): String? {
13 | add(LAST_NAME, result.surname)
14 | add(FIRST_NAME, result.firstName)
15 | add(DATE_OF_BIRTH, result.dateOfBirth)
16 | add(PLACE_OF_BIRTH, result.placeOfBirth)
17 | add(DATE_OF_ISSUE, result.validFrom)
18 | addDateOfExpiry(result.validUntil.date)
19 | add(ISSUING_AUTHORITY, result.issuingAuthority)
20 | add(DOCUMENT_NUMBER, result.number)
21 | add(LICENCE_CATEGORIES, result.licenceCategories)
22 |
23 | return FormattingUtils.formatResultTitle(result.firstName, result.surname)
24 | }
25 |
26 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/SwedenDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.entities.recognizers.blinkid.sweden.SwedenDlFrontRecognizer
7 |
8 | class SwedenDlRecognition : SingleSideWithId1CardDetectorRecognition() {
9 |
10 | override val recognizer by lazy { SwedenDlFrontRecognizer() }
11 |
12 | override fun extractData(result: SwedenDlFrontRecognizer.Result): String? {
13 | add(DOCUMENT_NUMBER, result.licenceNumber)
14 | add(FIRST_NAME, result.name)
15 | add(LAST_NAME, result.surname)
16 | add(DATE_OF_BIRTH, result.dateOfBirth)
17 | add(ISSUING_AUTHORITY, result.issuingAgency)
18 | add(DATE_OF_ISSUE, result.dateOfIssue)
19 | addDateOfExpiry(result.dateOfExpiry.date)
20 |
21 | return FormattingUtils.formatResultTitle(result.name, result.surname)
22 | }
23 |
24 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/SwitzerlandDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.entities.recognizers.blinkid.switzerland.SwitzerlandDlFrontRecognizer
7 |
8 | class SwitzerlandDlRecognition : SingleSideWithId1CardDetectorRecognition() {
9 |
10 | override val recognizer by lazy { SwitzerlandDlFrontRecognizer() }
11 |
12 | override fun extractData(result: SwitzerlandDlFrontRecognizer.Result): String? {
13 | add(FIRST_NAME, result.firstName)
14 | add(LAST_NAME, result.lastName)
15 | add(DATE_OF_BIRTH, result.dateOfBirth)
16 | add(PLACE_OF_BIRTH, result.placeOfBirth)
17 | add(DOCUMENT_NUMBER, result.licenseNumber)
18 | add(ISSUING_AUTHORITY, result.issuingAuthority)
19 | add(DATE_OF_ISSUE, result.dateOfIssue)
20 | addDateOfExpiry(result.dateOfExpiry.date)
21 | add(DATE_OF_EXPIRY_PERMANENT, result.isExpiryDatePermanent)
22 | add(LICENCE_CATEGORIES, result.vehicleCategories)
23 |
24 | return FormattingUtils.formatResultTitle(result.firstName, result.lastName)
25 | }
26 |
27 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/SwitzerlandIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
4 | import com.microblink.documentscanflow.isNotEmpty
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.documentscanflow.recognition.ResultValidator
7 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
8 | import com.microblink.documentscanflow.recognition.extract
9 | import com.microblink.documentscanflow.recognition.util.StringCombiner
10 | import com.microblink.entities.recognizers.Recognizer
11 | import com.microblink.entities.recognizers.blinkid.switzerland.SwitzerlandIdBackRecognizer
12 | import com.microblink.entities.recognizers.blinkid.switzerland.SwitzerlandIdFrontRecognizer
13 |
14 | class SwitzerlandIdRecognition: TwoSideRecognition() {
15 |
16 | override val frontRecognizer by lazy { SwitzerlandIdFrontRecognizer() }
17 | override val backRecognizer by lazy { SwitzerlandIdBackRecognizer() }
18 |
19 | override fun createValidator() = ResultValidator().match(frontResult.dateOfBirth.date, backResult.mrzResult.dateOfBirth.date)
20 |
21 | override fun extractFields() {
22 | if (frontResult.isNotEmpty()) {
23 | extractFrontSide()
24 | }
25 | if (backResult.isNotEmpty()) {
26 | extractBackSide()
27 | }
28 | }
29 |
30 | private fun extractFrontSide() {
31 | add(LAST_NAME, frontResult.surname)
32 | add(FIRST_NAME, frontResult.givenName)
33 | add(DATE_OF_BIRTH, frontResult.dateOfBirth)
34 | }
35 |
36 | private fun extractBackSide() {
37 | extract(backResult.mrzResult)
38 | add(PLACE_OF_ORIGIN, backResult.placeOfOrigin)
39 | add(AUTHORITY, backResult.authority)
40 | add(DATE_OF_ISSUE, backResult.dateOfIssue)
41 | }
42 |
43 | override fun getResultTitle(): String? {
44 | var firstName: String? = ""
45 | var lastName: String? = ""
46 | when {
47 | isTwoSideScan(frontResult, backResult) -> {
48 | val stringCombiner = StringCombiner(StringCombiner.Country.SWITZERLAND)
49 | firstName = stringCombiner.combineMRZString(backResult.mrzResult.secondaryId, frontResult.givenName)
50 | lastName = stringCombiner.combineMRZString(backResult.mrzResult.primaryId, frontResult.surname)
51 | }
52 | frontResult.isNotEmpty() -> {
53 | firstName = frontResult.givenName
54 | lastName = frontResult.surname
55 | }
56 | backResult.isNotEmpty() -> {
57 | firstName = backResult.mrzResult.secondaryId
58 | lastName = backResult.mrzResult.primaryId
59 | }
60 | }
61 | return FormattingUtils.formatResultTitle(firstName, lastName)
62 | }
63 |
64 | private fun isTwoSideScan(frontResult: Recognizer.Result, backResult: Recognizer.Result) =
65 | frontResult.isNotEmpty() && backResult.isNotEmpty()
66 |
67 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/SwitzerlandPassportRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideRecognition
4 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
5 | import com.microblink.documentscanflow.recognition.util.FormattingUtils
6 | import com.microblink.documentscanflow.recognition.util.StringCombiner
7 | import com.microblink.entities.recognizers.blinkid.switzerland.SwitzerlandPassportRecognizer
8 |
9 | class SwitzerlandPassportRecognition: SingleSideRecognition() {
10 |
11 | private val mStringCombiner by lazy { StringCombiner(StringCombiner.Country.SWITZERLAND) }
12 | override val recognizer by lazy { SwitzerlandPassportRecognizer() }
13 |
14 | override fun extractData(result: SwitzerlandPassportRecognizer.Result): String? {
15 | val firstName = mStringCombiner.combineMRZString(result.mrzResult.secondaryId, result.givenName)
16 | val lastName = mStringCombiner.combineMRZString(result.mrzResult.primaryId, result.surname)
17 |
18 | add(FIRST_NAME, firstName)
19 | add(LAST_NAME, lastName)
20 | add(PASSPORT_NUMBER, result.passportNumber)
21 | add(NATIONALITY, result.mrzResult.nationality)
22 | add(DATE_OF_BIRTH, result.dateOfBirth)
23 | add(PLACE_OF_ORIGIN, result.placeOfOrigin)
24 | add(DATE_OF_ISSUE, result.dateOfIssue)
25 | addDateOfExpiry(result.dateOfExpiry.date)
26 | add(SEX, result.sex)
27 | add(AUTHORITY, result.authority)
28 |
29 | return FormattingUtils.formatResultTitle(firstName, lastName)
30 | }
31 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/UnitedArabEmiratesDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.recognition.SingleSideWithId1CardDetectorRecognition
4 | import com.microblink.entities.recognizers.blinkid.unitedArabEmirates.UnitedArabEmiratesDlFrontRecognizer
5 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
6 |
7 | class UnitedArabEmiratesDlRecognition : SingleSideWithId1CardDetectorRecognition() {
8 |
9 | override val recognizer by lazy { UnitedArabEmiratesDlFrontRecognizer() }
10 |
11 | override fun extractData(result: UnitedArabEmiratesDlFrontRecognizer.Result): String? {
12 | add(LICENCE_NUMBER, result.licenseNumber)
13 | add(AUTHORITY, result.licensingAuthority)
14 | add(FULL_NAME, result.name)
15 | add(NATIONALITY, result.nationality)
16 | add(DATE_OF_BIRTH, result.dateOfBirth)
17 | add(DATE_OF_ISSUE, result.issueDate)
18 | addDateOfExpiry(result.expiryDate.date)
19 | add(PLACE_OF_ISSUE, result.placeOfIssue)
20 |
21 | return result.name
22 | }
23 |
24 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/UnitedArabEmiratesIdRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.buildTitle
4 | import com.microblink.documentscanflow.isNotEmpty
5 | import com.microblink.documentscanflow.recognition.ResultValidator
6 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
7 | import com.microblink.documentscanflow.recognition.extract
8 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
9 | import com.microblink.documentscanflow.sanitizeMRZString
10 | import com.microblink.entities.recognizers.blinkid.unitedArabEmirates.UnitedArabEmiratesIdBackRecognizer
11 | import com.microblink.entities.recognizers.blinkid.unitedArabEmirates.UnitedArabEmiratesIdFrontRecognizer
12 |
13 | class UnitedArabEmiratesIdRecognition: TwoSideRecognition() {
14 |
15 | override val frontRecognizer by lazy { UnitedArabEmiratesIdFrontRecognizer() }
16 | override val backRecognizer by lazy { UnitedArabEmiratesIdBackRecognizer() }
17 |
18 | override fun createValidator(): ResultValidator {
19 | val frontIdNumber = frontResult.idNumber.replace("-", "")
20 | val backIdNumber = backResult.mrzResult.opt1.sanitizeMRZString()
21 | return ResultValidator().match(frontIdNumber, backIdNumber)
22 | }
23 |
24 | override fun extractFields() {
25 | if (backResult.isNotEmpty()) {
26 | extract(backResult.mrzResult)
27 | }
28 |
29 | if (frontResult.isNotEmpty()) {
30 | add(FULL_NAME, frontResult.name.replace("\n", " "))
31 | add(IDENTITY_NUMBER, frontResult.idNumber)
32 | add(NATIONALITY, frontResult.nationality)
33 | }
34 | }
35 |
36 | override fun getResultTitle(): String? {
37 | if (frontResult.isNotEmpty()) {
38 | return frontResult.name.replace("\n", " ")
39 | }
40 | if (backResult.isNotEmpty()) {
41 | return backResult.mrzResult.buildTitle()
42 | }
43 | return null
44 | }
45 |
46 | override fun setupRecognizers() {
47 | // glare detection is known to be causing issues, disable it
48 | frontRecognizer.setDetectGlare(false)
49 | backRecognizer.setDetectGlare(false)
50 | }
51 |
52 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/UsdlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.isNotEmpty
4 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
5 | import com.microblink.documentscanflow.recognition.extract
6 | import com.microblink.entities.recognizers.blinkbarcode.usdl.UsdlRecognizer
7 | import com.microblink.entities.recognizers.blinkid.documentface.DocumentFaceRecognizer
8 |
9 | open class UsdlRecognition : TwoSideRecognition() {
10 |
11 | override val frontRecognizer by lazy { DocumentFaceRecognizer() }
12 | override val backRecognizer by lazy { UsdlRecognizer() }
13 |
14 | override fun extractFields() = extract(backResult)
15 |
16 | override fun getResultTitle(): String? {
17 | return if (backResult.isNotEmpty()) backResult.fullName
18 | else null
19 | }
20 |
21 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/UsdlUnder21Recognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.ScanFlowState
4 |
5 | class UsdlUnder21Recognition : UsdlRecognition() {
6 |
7 | override fun isForVerticalDocument(scanFlowState: ScanFlowState) = scanFlowState == ScanFlowState.FRONT_SIDE_SCAN
8 |
9 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/implementations/VictoriaDlRecognition.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.implementations
2 |
3 | import com.microblink.documentscanflow.isNotEmpty
4 | import com.microblink.documentscanflow.recognition.ResultValidator
5 | import com.microblink.documentscanflow.recognition.TwoSideRecognition
6 | import com.microblink.documentscanflow.recognition.resultentry.ResultKey.*
7 | import com.microblink.entities.recognizers.blinkid.australia.AustraliaDlBackRecognizer
8 | import com.microblink.entities.recognizers.blinkid.australia.AustraliaDlFrontRecognizer
9 |
10 | class VictoriaDlRecognition : TwoSideRecognition() {
11 |
12 | override val frontRecognizer by lazy { AustraliaDlFrontRecognizer() }
13 | override val backRecognizer by lazy { AustraliaDlBackRecognizer() }
14 |
15 | override fun createValidator() = ResultValidator().match(frontResult.licenceExpiry, backResult.licenceExpiry)
16 |
17 | override fun extractFields() {
18 | if (frontResult.isNotEmpty()) {
19 | frontResult.apply {
20 | add(ADDRESS, address)
21 | add(DATE_OF_BIRTH, dateOfBirth)
22 | add(FULL_NAME, fullName)
23 | addDateOfExpiry(licenceExpiry)
24 | add(LICENCE_NUMBER, licenceNumber)
25 | add(LICENCE_TYPE, licenceType)
26 | }
27 | }
28 |
29 | if (backResult.isNotEmpty()) {
30 | backResult.apply {
31 | add(LAST_NAME, lastName)
32 | add(ADDRESS, address)
33 | add(LICENCE_NUMBER, licenceNumber)
34 | addDateOfExpiry(licenceExpiry)
35 | }
36 | }
37 | }
38 |
39 | override fun getResultTitle(): String? {
40 | if (frontResult.isNotEmpty()) {
41 | return frontResult.fullName
42 | }
43 | if (backResult.isNotEmpty()) {
44 | return backResult.lastName
45 | }
46 | return null
47 | }
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/resultentry/DateResultEntry.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.resultentry
2 |
3 | import android.os.Parcel
4 | import android.os.Parcelable
5 | import com.microblink.results.date.Date
6 |
7 | class DateResultEntry(key: ResultKey, value: Date) : ResultEntry(key, value) {
8 |
9 | constructor(source: Parcel) : this(source.readSerializable() as ResultKey, Date(source.readInt(), source.readInt(), source.readInt())) {
10 | readValidityFromParcel(source)
11 | }
12 |
13 | override fun describeContents() = 0
14 |
15 | override fun writeToParcel(dest: Parcel?, flags: Int) {
16 | dest?.writeSerializable(key)
17 | dest?.writeInt(value.day)
18 | dest?.writeInt(value.month)
19 | dest?.writeInt(value.year)
20 | writeValidityToParcel(dest)
21 | }
22 |
23 | companion object {
24 | @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator {
25 | override fun createFromParcel(source: Parcel): DateResultEntry = DateResultEntry(source)
26 | override fun newArray(size: Int): Array = arrayOfNulls(size)
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/resultentry/ResultEntry.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.resultentry
2 |
3 | import android.os.Parcel
4 | import android.os.Parcelable
5 | import com.microblink.documentscanflow.compareTo
6 | import com.microblink.documentscanflow.currentDate
7 | import com.microblink.results.date.Date
8 | import java.util.*
9 |
10 | abstract class ResultEntry(val key: ResultKey, val value: T) : Parcelable {
11 |
12 | var isValid = true
13 | protected set
14 |
15 | override fun equals(other: Any?): Boolean {
16 | return other is ResultEntry<*> && other.key == this.key
17 | }
18 |
19 | override fun hashCode() = key.hashCode()
20 |
21 | protected fun writeValidityToParcel(dest: Parcel?) {
22 | dest?.writeInt((if (isValid) 1 else 0))
23 | }
24 |
25 | protected fun readValidityFromParcel(source: Parcel) {
26 | isValid = source.readInt() == 1
27 | }
28 |
29 | internal class Builder {
30 |
31 | fun build(key: ResultKey, value: String?) =
32 | StringResultEntry(key, value ?: "")
33 |
34 | fun build(key: ResultKey, value: Date) =
35 | build(key, value, DateCheckType.NO_CHECK)
36 |
37 | fun build(key: ResultKey, amount: Int, unitName: String) =
38 | StringResultEntry(key, "$amount $unitName")
39 |
40 | fun build(key: ResultKey, value: Int) =
41 | StringResultEntry(key, value.toString())
42 |
43 | fun build(key: ResultKey, value: Boolean) =
44 | StringResultEntry(key, value.toString())
45 |
46 | fun build(key: ResultKey, value: Date, checkType: Builder.DateCheckType): ResultEntry<*> {
47 | val entry = DateResultEntry(key, value)
48 | val currentDate = GregorianCalendar.getInstance().currentDate()
49 |
50 | entry.isValid = checkType.check(currentDate, value)
51 | return entry
52 | }
53 |
54 | enum class DateCheckType {
55 | NO_CHECK {
56 | override fun check(currentDate: Date, dateToCheck: Date) = true
57 | },
58 | IN_PAST {
59 | override fun check(currentDate: Date, dateToCheck: Date) = currentDate.compareTo(dateToCheck) > 0
60 | },
61 | IN_FUTURE {
62 | override fun check(currentDate: Date, dateToCheck: Date) = currentDate.compareTo(dateToCheck) < 0
63 | };
64 |
65 | abstract fun check(currentDate: Date, dateToCheck: Date): Boolean
66 | }
67 | }
68 |
69 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/resultentry/ResultKey.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.resultentry
2 |
3 | import com.microblink.documentscanflow.R
4 |
5 | enum class ResultKey(val stringResId: Int) {
6 |
7 | //Names
8 | FIRST_NAME(R.string.keyFirstName),
9 | SECONDARY_ID(R.string.keySecondaryId),
10 | LAST_NAME(R.string.keyLastName),
11 | PRIMARY_ID(R.string.keyPrimaryId),
12 | FAMILY_NAME(R.string.keyFamilyName),
13 | FULL_NAME(R.string.keyFullName),
14 | SURNAME_AT_BIRTH(R.string.keySurnameAtBirth),
15 | PARENT_NAMES(R.string.keyParentNames),
16 |
17 | //Birth date-place
18 | DATE_OF_BIRTH(R.string.keyDateOfBirth),
19 | BIRTH_DATA(R.string.keyBirthData),
20 | COUNTRY_OF_BIRTH(R.string.keyCountryOfBirth),
21 | PLACE_OF_BIRTH(R.string.keyPlaceOfBirth),
22 | PLACE_OF_ORIGIN(R.string.keyPlaceOfOrigin),
23 |
24 | //Issued-Expired
25 | DATE_OF_ISSUE(R.string.keyIssueDate),
26 | DATE_OF_ISSUE_FOR_B_CATEGORY(R.string.keyDateOfIssueBCategory),
27 | DATE_OF_EXPIRY(R.string.keyDateOfExpiry),
28 | DATE_OF_EXPIRY_PERMANENT(R.string.keyDateOfExpiryPermanent),
29 |
30 | //Document numbers
31 | ALIEN_NUMBER(R.string.keyAlienNumber),
32 | APPLICATION_RECEIPT_NUMBER(R.string.keyApplicationReceiptNumber),
33 | ARMY_NUMBER(R.string.keyArmyNumber),
34 | CIVIL_STATUS_NUMBER(R.string.keyCivilStatusNumber),
35 | CIVIL_ID_NUMBER(R.string.keyCivilIdNumber),
36 | CURP(R.string.keyCurp),
37 | DOCUMENT_NUMBER(R.string.keyDocumentNumber),
38 | DRIVER_NUMBER(R.string.keyDriverNumber),
39 | IMMIGRANT_CASE_NUMBER(R.string.keyImmigrantCaseNumber),
40 | IDENTITY_NUMBER(R.string.keyIdentityNumber),
41 | LICENCE_NUMBER(R.string.keyLicenceNumber),
42 | NATIONAL_NUMBER(R.string.keyNationalNumber),
43 | NRIC_NUMBER(R.string.keyNricNumber),
44 | SERIAL_NUMBER(R.string.keySerialNumber),
45 | PERSONAL_NUMBER(R.string.keyPersonalNumber),
46 | PASSPORT_NUMBER(R.string.keyPassportNumber),
47 |
48 | //Address
49 | CITY(R.string.keyCity),
50 | PROVINCE(R.string.keyProvince),
51 | ADDRESS(R.string.keyAddress),
52 | PRINCIPAL_RESIDENCE_AT_ISSUANCE(R.string.keyPrincipalResidenceAtIssuance),
53 | FACULTY_ADDRESS(R.string.keyFacultyAddress),
54 | RESIDENTIAL_STATUS(R.string.keyResidentialStatus),
55 |
56 | //Nationality
57 | NATIONALITY(R.string.keyNationality),
58 | CITIZENSHIP(R.string.keyCitizenship),
59 |
60 | //Issuer
61 | ISSUER(R.string.keyIssuer),
62 | AUTHORITY(R.string.keyAuthority),
63 | ISSUING_AGENCY(R.string.keyIssuingAgency),
64 | ISSUING_AUTHORITY(R.string.keyIssuingAuthority),
65 | PLACE_OF_ISSUE(R.string.keyPlaceOfIssue),
66 |
67 | //Personal details
68 | SEX(R.string.keySex),
69 | BLOOD_GROUP(R.string.keyBloodGroup),
70 | EYE_COLOR(R.string.keyEyeColor),
71 | HEIGHT(R.string.keyHeight),
72 | MARITAL_STATUS(R.string.keyMaritalStatus),
73 | RACE(R.string.keyRace),
74 | RELIGION(R.string.keyReligion),
75 |
76 | DOCUMENT_CODE(R.string.keyDocumentCode),
77 | LICENCE_CATEGORIES(R.string.keyLicenceCategories),
78 | CLASS(R.string.keyClass),
79 | VEHICLE_CLASS(R.string.keyVehicleClass),
80 | ENDORSEMENTS(R.string.keyEndorsements),
81 | DRIVER_RESTRICTIONS(R.string.keyDriverRestrictions),
82 | LICENCE_TYPE(R.string.keyLicenceType),
83 | VEHICLE_CATEGORIES(R.string.keyVehicleCategories),
84 |
85 | //Employment
86 | EMPLOYER(R.string.keyEmployer),
87 | EMPLOYER_ADDRESS(R.string.keyEmployerAddress),
88 | OCCUPATION(R.string.keyOccupation),
89 |
90 | //Other
91 | BARCODE_DATA(R.string.keyBarcodeString),
92 | MRZ_TEXT(R.string.keyMRZText),
93 | OPTIONAL_FIELD_1(R.string.keyOpt1),
94 | OPTIONAL_FIELD_2(R.string.keyOpt2),
95 | RANK(R.string.keyRank),
96 | SECTOR(R.string.keySector),
97 | SPECIAL_REMARKS(R.string.keySpecialRemarks),
98 | ;
99 |
100 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/resultentry/StringResultEntry.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.resultentry
2 |
3 | import android.os.Parcel
4 | import android.os.Parcelable
5 |
6 | class StringResultEntry(key: ResultKey, value: String) : ResultEntry(key, value) {
7 |
8 | constructor(source: Parcel) : this(source.readSerializable() as ResultKey, source.readString()) {
9 | readValidityFromParcel(source)
10 | }
11 |
12 | override fun describeContents() = 0
13 |
14 | override fun writeToParcel(dest: Parcel?, flags: Int) {
15 | dest?.writeSerializable(key)
16 | dest?.writeString(value)
17 | writeValidityToParcel(dest)
18 | }
19 |
20 | companion object {
21 | @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator {
22 | override fun createFromParcel(source: Parcel): StringResultEntry = StringResultEntry(source)
23 | override fun newArray(size: Int): Array = arrayOfNulls(size)
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/util/FormattingUtils.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.util
2 |
3 | internal object FormattingUtils {
4 |
5 | fun formatResultTitle(firstName: String?, lastName: String?): String {
6 | val sb = StringBuilder()
7 | sb.append(lastName ?: "").append(" ").append(firstName ?: "")
8 | return sb.toString()
9 | }
10 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/recognition/util/ImageStorage.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.recognition.util
2 |
3 | import com.microblink.documentscanflow.recognition.RecognitionResult
4 | import com.microblink.image.Image
5 |
6 | /**
7 | * Utility you can use when you want to pass images to another activity but don't want to save them to storage
8 | */
9 | object ImageStorage {
10 |
11 | @JvmStatic
12 | var frontSideDocumentImage: Image? = null
13 | set(value) {
14 | field?.dispose()
15 | field = value
16 | }
17 |
18 | @JvmStatic
19 | var backSideDocumentImage: Image? = null
20 | set(value) {
21 | field?.dispose()
22 | field = value
23 | }
24 |
25 | @JvmStatic
26 | var faceImage: Image? = null
27 | set(value) {
28 | field?.dispose()
29 | field = value
30 | }
31 |
32 | @JvmStatic
33 | var signatureImage: Image? = null
34 | set(value) {
35 | field?.dispose()
36 | field = value
37 | }
38 |
39 | @JvmStatic
40 | fun addImages(recognitionResult: RecognitionResult) {
41 | backSideDocumentImage = recognitionResult.backSideDocumentImage
42 | frontSideDocumentImage = recognitionResult.frontSideDocumentImage
43 | faceImage = recognitionResult.faceImage
44 | signatureImage = recognitionResult.signatureImage
45 | }
46 |
47 | @JvmStatic
48 | fun clearImages() {
49 | frontSideDocumentImage?.dispose()
50 | frontSideDocumentImage = null
51 |
52 | backSideDocumentImage?.dispose()
53 | backSideDocumentImage = null
54 |
55 | faceImage?.dispose()
56 | faceImage = null
57 |
58 | signatureImage?.dispose()
59 | signatureImage = null
60 | }
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/TorchButtonHandler.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui
2 |
3 | import android.os.Handler
4 | import android.view.MenuItem
5 | import com.microblink.documentscanflow.R
6 | import com.microblink.view.recognition.RecognizerRunnerView
7 |
8 | internal class TorchButtonHandler {
9 |
10 | internal var torchItem: MenuItem? = null
11 |
12 | var isTorchEnabled = false
13 | set(isEnabled) {
14 | field = isEnabled
15 | updateIcon(isEnabled)
16 | }
17 |
18 | internal fun onTorchSupported() {
19 | torchItem?.isVisible = true
20 | }
21 |
22 | internal fun onTorchButtonClick(recognizerView: RecognizerRunnerView, mainThreadHandler : Handler) {
23 | recognizerView.setTorchState(!isTorchEnabled) { success ->
24 | if (success) {
25 | mainThreadHandler.post {isTorchEnabled = !isTorchEnabled}
26 | }
27 | }
28 | }
29 |
30 | private fun updateIcon(isEnabled: Boolean) {
31 | if (isEnabled) {
32 | torchItem?.setIcon(R.drawable.mb_ic_torch_on)
33 | } else {
34 | torchItem?.setIcon(R.drawable.mb_ic_torch_off)
35 | }
36 | }
37 |
38 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/documentchooser/DefaultDocumentChooser.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.documentchooser
2 |
3 | import android.app.Activity
4 | import android.content.Intent
5 | import com.microblink.documentscanflow.BaseDocumentScanActivity
6 | import com.microblink.documentscanflow.R
7 | import com.microblink.documentscanflow.country.Country
8 | import com.microblink.documentscanflow.country.CountryFactory
9 | import com.microblink.documentscanflow.document.Document
10 | import com.microblink.documentscanflow.ui.documentchooser.countryfilter.AllowAllCountryFilter
11 | import com.microblink.documentscanflow.ui.documentchooser.defaultimplementation.ChooseCountryActivity
12 |
13 | open class DefaultDocumentChooser(private val scanActivity: Activity) : DocumentChooser {
14 |
15 | override fun shouldShowDocumentTypeTabs() = true
16 |
17 | override fun shouldShowCountryChooser() = true
18 |
19 | override fun getAllowedDocumentTypes(country: Country) = country.getSupportedDocumentTypes()
20 |
21 | override fun geChooseCountryLabel() =
22 | scanActivity.getString(R.string.mb_supported_countries_label)
23 |
24 | override fun getDefaultDocumentTypeForCountry(country: Country) =
25 | country.getSupportedDocumentTypes()[0]
26 |
27 | override fun onChooseCountryClick(currentDocument : Document) {
28 | val intent = Intent(scanActivity, ChooseCountryActivity::class.java).apply {
29 | putExtra(ChooseCountryActivity.EXTRA_CURRENT_COUNTRY_CODE, currentDocument.country.code)
30 | putExtra(ChooseCountryActivity.EXTRA_COUNTRY_FILTER, getCountryFilter())
31 | putExtra(ChooseCountryActivity.EXTRA_SHOW_INDEXER_SIDEBAR, shouldShowAlphabetIndexerSidebar())
32 | putExtra(ChooseCountryActivity.EXTRA_THEME, getActivityTheme())
33 | }
34 | scanActivity.startActivityForResult(intent, BaseDocumentScanActivity.REQ_CODE_CHOOSE_DOC)
35 | }
36 |
37 | protected open fun getActivityTheme() = R.style.MbChooseCountryLightTheme
38 |
39 | protected open fun getCountryFilter() = AllowAllCountryFilter()
40 |
41 | protected open fun shouldShowAlphabetIndexerSidebar() =
42 | CountryFactory.getSortedCountries(getCountryFilter()).size > 50
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/documentchooser/DocumentChooser.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.documentchooser
2 |
3 | import com.microblink.documentscanflow.country.Country
4 | import com.microblink.documentscanflow.document.Document
5 | import com.microblink.documentscanflow.document.DocumentType
6 |
7 |
8 | interface DocumentChooser {
9 |
10 | fun shouldShowCountryChooser() : Boolean
11 |
12 | fun shouldShowDocumentTypeTabs() : Boolean
13 |
14 | fun getDefaultDocumentTypeForCountry(country: Country) : DocumentType
15 |
16 | fun geChooseCountryLabel(): String
17 |
18 | fun onChooseCountryClick(currentDocument : Document)
19 |
20 | fun getAllowedDocumentTypes(country: Country): List
21 |
22 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/documentchooser/countryfilter/AllowAllCountryFilter.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.documentchooser.countryfilter
2 |
3 | import android.os.Parcel
4 | import android.os.Parcelable
5 | import com.microblink.documentscanflow.country.Country
6 |
7 | class AllowAllCountryFilter() : CountryFilter, Parcelable {
8 |
9 | override fun filter(countries: List) = countries
10 |
11 | constructor(source: Parcel) : this()
12 |
13 | override fun describeContents() = 0
14 |
15 | override fun writeToParcel(dest: Parcel, flags: Int) {}
16 |
17 | companion object {
18 | @JvmField
19 | val CREATOR: Parcelable.Creator = object : Parcelable.Creator {
20 | override fun createFromParcel(source: Parcel): AllowAllCountryFilter = AllowAllCountryFilter(source)
21 | override fun newArray(size: Int): Array = arrayOfNulls(size)
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/documentchooser/countryfilter/BlacklistCountryFilter.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.documentchooser.countryfilter
2 |
3 | import android.os.Parcel
4 | import android.os.Parcelable
5 | import com.microblink.documentscanflow.country.Country
6 |
7 | class BlacklistCountryFilter(private val blacklistedCountryCodes : Set) : CountryFilter {
8 |
9 | override fun filter(countries: List) = countries.filter { !blacklistedCountryCodes.contains(it.code) }
10 |
11 | constructor(parcel: Parcel) : this(mutableSetOf(*parcel.createStringArray()))
12 |
13 | override fun writeToParcel(dest: Parcel, flags: Int) {
14 | with(dest) {
15 | dest.writeStringArray(blacklistedCountryCodes.toTypedArray())
16 | }
17 | }
18 |
19 | override fun describeContents(): Int {
20 | return 0
21 | }
22 |
23 | companion object CREATOR : Parcelable.Creator {
24 | override fun createFromParcel(parcel: Parcel): BlacklistCountryFilter {
25 | return BlacklistCountryFilter(parcel)
26 | }
27 |
28 | override fun newArray(size: Int): Array {
29 | return arrayOfNulls(size)
30 | }
31 | }
32 |
33 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/documentchooser/countryfilter/CountryFilter.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.documentchooser.countryfilter
2 |
3 | import android.os.Parcelable
4 | import com.microblink.documentscanflow.country.Country
5 |
6 | interface CountryFilter : Parcelable {
7 |
8 | fun filter(countries: List): List
9 |
10 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/documentchooser/countryfilter/WhitelistCountryFilter.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.documentchooser.countryfilter
2 |
3 | import android.os.Parcel
4 | import android.os.Parcelable
5 | import com.microblink.documentscanflow.country.Country
6 |
7 | class WhitelistCountryFilter(private val whitelistedCountryCodes : Set) : CountryFilter {
8 |
9 | override fun filter(countries: List) = countries.filter { whitelistedCountryCodes.contains(it.code) }
10 |
11 | constructor(parcel: Parcel) : this(mutableSetOf(*parcel.createStringArray()))
12 |
13 | override fun writeToParcel(dest: Parcel, flags: Int) {
14 | dest.writeStringArray(whitelistedCountryCodes.toTypedArray())
15 | }
16 |
17 | override fun describeContents(): Int {
18 | return 0
19 | }
20 |
21 | companion object CREATOR : Parcelable.Creator {
22 | override fun createFromParcel(parcel: Parcel): WhitelistCountryFilter {
23 | return WhitelistCountryFilter(parcel)
24 | }
25 |
26 | override fun newArray(size: Int): Array {
27 | return arrayOfNulls(size)
28 | }
29 | }
30 |
31 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/documentchooser/defaultimplementation/adapters/FilterListAdapter.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.documentchooser.defaultimplementation.adapters
2 |
3 | import android.view.View
4 | import android.view.ViewGroup
5 | import android.widget.BaseAdapter
6 | import com.microblink.documentscanflow.R
7 | import com.microblink.documentscanflow.country.Country
8 | import com.microblink.documentscanflow.inflate
9 | import com.microblink.documentscanflow.ui.documentchooser.countryfilter.CountryFilter
10 | import kotlinx.android.synthetic.main.mb_list_item_country.view.*
11 |
12 | class FilterListAdapter(private val elementList: List) : BaseAdapter() {
13 |
14 | private var mShownElements: List = elementList.toList()
15 |
16 | override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
17 | val view: View = convertView ?: parent.inflate(R.layout.mb_list_item_country)
18 | view.countryName.text = mShownElements[position].getLocalisedName()
19 | return view
20 | }
21 |
22 | override fun getItem(position: Int): Country {
23 | return mShownElements[position]
24 | }
25 |
26 | override fun getItemId(position: Int): Long {
27 | return position.toLong()
28 | }
29 |
30 | override fun getCount(): Int {
31 | return mShownElements.size
32 | }
33 |
34 | fun filter(countryFilter: CountryFilter, matchStr: String) {
35 | mShownElements = countryFilter.filter(elementList)
36 | mShownElements = mShownElements.filter { isMatchingFilter(it.getLocalisedName(), matchStr) }
37 | notifyDataSetChanged()
38 | }
39 |
40 | private fun isMatchingFilter(countryName: String, filter: String): Boolean {
41 | val filterWords = filter.split(" ")
42 | val countryNameWords = countryName.split(" ")
43 |
44 | return filterWords.all { filterWord ->
45 | countryNameWords.any {
46 | it.startsWith(filterWord, true)
47 | }
48 | }
49 | }
50 |
51 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/documentchooser/defaultimplementation/fragments/CountryFindFragment.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.documentchooser.defaultimplementation.fragments
2 |
3 | import android.app.ListFragment
4 | import android.os.Bundle
5 | import android.view.View
6 | import android.widget.ListView
7 | import com.microblink.documentscanflow.country.CountryFactory
8 | import com.microblink.documentscanflow.ui.documentchooser.countryfilter.AllowAllCountryFilter
9 | import com.microblink.documentscanflow.ui.documentchooser.countryfilter.CountryFilter
10 | import com.microblink.documentscanflow.ui.documentchooser.defaultimplementation.adapters.FilterListAdapter
11 |
12 | class CountryFindFragment : ListFragment() {
13 |
14 | private val mAdapter: FilterListAdapter = FilterListAdapter(CountryFactory.getSortedCountries(AllowAllCountryFilter()))
15 |
16 | override fun onActivityCreated(savedInstanceState: Bundle?) {
17 | super.onActivityCreated(savedInstanceState)
18 | listView.divider = null
19 | listView.dividerHeight = 0
20 | listView.setDrawSelectorOnTop(true)
21 | listAdapter = mAdapter
22 | }
23 |
24 | override fun onListItemClick(list: ListView?, view: View?, position: Int, id: Long) {
25 | val countrySett = mAdapter.getItem(position)
26 | onCountryClick(activity, countrySett.code)
27 | }
28 |
29 | fun find(countryFilter: CountryFilter, matchStr: String) {
30 | mAdapter.filter(countryFilter, matchStr)
31 | }
32 |
33 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/documentchooser/defaultimplementation/fragments/Delegates.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.documentchooser.defaultimplementation.fragments
2 |
3 | import android.app.Activity
4 | import android.content.Intent
5 | import com.microblink.documentscanflow.ui.documentchooser.defaultimplementation.ChooseCountryActivity
6 |
7 | fun onCountryClick(activity: Activity, countryCode: String) {
8 | val intent = Intent()
9 | intent.putExtra(ChooseCountryActivity.EXTRA_RESULT_COUNTRY_CODE, countryCode)
10 | activity.setResult(Activity.RESULT_OK, intent)
11 | activity.finish()
12 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/localization/DefaultLocalizationManager.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.localization
2 |
3 | internal class DefaultLocalizationManager: LocalizationManager {
4 |
5 | private val supportedLanguages = setOf("en", "es", "de", "fr")
6 |
7 | override fun isLanguageSupported(lang: String) = supportedLanguages.contains(lang)
8 |
9 | override fun getDefaultLanguage() = "en"
10 |
11 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/localization/LocalizationManager.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.localization
2 |
3 | /**
4 | * Determines to which languages will the country list be translated to
5 | * If you want to disable translations for all strings, see https://developer.android.com/studio/build/shrink-code#unused-alt-resources
6 | */
7 | interface LocalizationManager {
8 |
9 | /**
10 | * returns true if passed in language is supported
11 | */
12 | fun isLanguageSupported(lang: String): Boolean
13 |
14 | /**
15 | * returns language that should be used if device language is not supported
16 | */
17 | fun getDefaultLanguage(): String
18 |
19 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/scanlineanimator/EmptyScanLineAnimator.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.scanlineanimator
2 |
3 | import com.microblink.view.animation.ScanLineAnimator
4 |
5 | class EmptyScanLineAnimator: ScanLineAnimator {
6 |
7 | override fun onScanStart() {
8 | }
9 |
10 | override fun onScanPause() {
11 | }
12 |
13 | override fun onScanResume() {
14 | }
15 |
16 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/scansoundplayer/EmptyScanSuccessPlayer.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.scansoundplayer
2 |
3 | class EmptyScanSuccessPlayer : ScanSuccessPlayer {
4 |
5 | override var isSoundEnabled: Boolean
6 | get() = false
7 | set(value) {}
8 |
9 | override fun prepare() {
10 | }
11 |
12 | override fun play() {
13 | }
14 |
15 | override fun cleanup() {
16 | }
17 |
18 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/scansoundplayer/ScanSuccessPlayer.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.scansoundplayer
2 |
3 | interface ScanSuccessPlayer {
4 | var isSoundEnabled : Boolean
5 | fun prepare()
6 | fun play()
7 | fun cleanup()
8 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/scansoundplayer/SoundPoolScanSuccessPlayer.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.scansoundplayer
2 |
3 | import android.content.Context
4 | import android.media.AudioAttributes
5 | import android.media.AudioManager
6 | import android.media.SoundPool
7 | import android.os.Build
8 |
9 | open class SoundPoolScanSuccessPlayer(private val context: Context, private val soundResourceId: Int) : ScanSuccessPlayer {
10 |
11 | private var soundPool: SoundPool? = null
12 | private var soundId : Int = 0
13 | override var isSoundEnabled : Boolean = true
14 |
15 | override fun prepare() {
16 | soundPool = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
17 | SoundPool.Builder().setMaxStreams(1).setAudioAttributes(
18 | AudioAttributes.Builder()
19 | .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
20 | .setUsage(AudioAttributes.USAGE_MEDIA)
21 | .build()
22 | ).build()
23 | } else {
24 | SoundPool(1, AudioManager.STREAM_MUSIC, 0)
25 | }
26 | soundId = soundPool!!.load(context, soundResourceId, 1)
27 | }
28 |
29 | override fun play() {
30 | if(isSoundEnabled) {
31 | soundPool?.play(soundId, 1.0f, 1.0f, 1, 0, 1.0f)
32 | }
33 | }
34 |
35 | override fun cleanup() {
36 | soundPool?.release()
37 | soundPool = null
38 | soundId = -1
39 | }
40 |
41 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/scantimeouthandler/DefaultScanTimeoutHandler.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.scantimeouthandler
2 |
3 | import android.os.CountDownTimer
4 |
5 | class DefaultScanTimeoutHandler(private var scanTimeoutMillis: Long): ScanTimeoutHandler {
6 |
7 | private var timeoutTimer : CountDownTimer? = null
8 | private var currentTimerTimeoutMillis = 0L
9 | private var listener: ScanTimeoutHandler.Listener? = null
10 |
11 | override fun registerListener(listener: ScanTimeoutHandler.Listener?) {
12 | this.listener = listener
13 | }
14 |
15 | override fun startTimer() {
16 | updateTimerIfTimeoutUpdated()
17 | timeoutTimer?.start()
18 | }
19 |
20 | override fun stopTimer() {
21 | timeoutTimer?.cancel()
22 | }
23 |
24 | private fun onTimeout() {
25 | listener?.onTimeout()
26 |
27 | // each next timeout should be longer
28 | scanTimeoutMillis *= 2
29 |
30 | // timeout duration has been updated so we want a new timer
31 | destroyCurrentTimeoutTimer()
32 | }
33 |
34 | private fun destroyCurrentTimeoutTimer() {
35 | timeoutTimer?.cancel()
36 | timeoutTimer = null
37 | }
38 |
39 | private fun updateTimerIfTimeoutUpdated() {
40 | if (currentTimerTimeoutMillis != scanTimeoutMillis) {
41 | currentTimerTimeoutMillis = scanTimeoutMillis
42 | timeoutTimer = createTimeoutTimer()
43 | }
44 | }
45 |
46 | private fun createTimeoutTimer() : CountDownTimer = object: CountDownTimer(scanTimeoutMillis, scanTimeoutMillis) {
47 | override fun onFinish() {
48 | onTimeout()
49 | }
50 |
51 | override fun onTick(millisUntilFinished: Long) {
52 | // don't care
53 | }
54 | }
55 |
56 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/scantimeouthandler/ScanTimeoutHandler.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.scantimeouthandler
2 |
3 | interface ScanTimeoutHandler {
4 |
5 | fun registerListener(listener: Listener?)
6 |
7 | fun startTimer()
8 |
9 | fun stopTimer()
10 |
11 | interface Listener {
12 | fun onTimeout()
13 | }
14 |
15 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/splashoverlay/InvisibleSplashOverlaySettings.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.splashoverlay
2 |
3 | class InvisibleSplashOverlaySettings : SplashOverlaySettings {
4 |
5 | override fun isEnabled(): Boolean = false
6 |
7 | override fun getDurationMillis(): Long = 0
8 |
9 | override fun getBackgroundColorResource(): Int = 0
10 |
11 | override fun getLogoDrawableResource(): Int = 0
12 |
13 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/kotlin/com/microblink/documentscanflow/ui/splashoverlay/SplashOverlaySettings.kt:
--------------------------------------------------------------------------------
1 | package com.microblink.documentscanflow.ui.splashoverlay
2 |
3 | import android.support.annotation.ColorRes
4 | import android.support.annotation.DrawableRes
5 |
6 | interface SplashOverlaySettings {
7 |
8 | fun isEnabled() : Boolean
9 | fun getDurationMillis() : Long
10 | @ColorRes fun getBackgroundColorResource() : Int
11 | @DrawableRes fun getLogoDrawableResource() : Int
12 |
13 | }
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/anim/mb_hide_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/anim/mb_show_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_arrow_right.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_checkmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_checkmark.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_flip_card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_flip_card.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_torch_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_torch_off.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_torch_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-hdpi/mb_ic_torch_on.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_arrow_right.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_checkmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_checkmark.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_flip_card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_flip_card.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_torch_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_torch_off.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_torch_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-mdpi/mb_ic_torch_on.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_arrow_right.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_checkmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_checkmark.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_flip_card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_flip_card.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_torch_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_torch_off.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_torch_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xhdpi/mb_ic_torch_on.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_arrow_right.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_checkmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_checkmark.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_flip_card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_flip_card.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_torch_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_torch_off.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_torch_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxhdpi/mb_ic_torch_on.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_arrow_right.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_checkmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_checkmark.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_flip_card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_flip_card.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_torch_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_torch_off.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_torch_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/drawable-xxxhdpi/mb_ic_torch_on.png
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/drawable/mb_bg_choose_country.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/layout/mb_activity_choose_country.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/layout/mb_activity_scan_document.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
13 |
14 |
22 |
23 |
29 |
30 |
40 |
41 |
44 |
45 |
46 |
49 |
50 |
58 |
59 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/layout/mb_fragment_country_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
18 |
19 |
23 |
24 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/layout/mb_include_splash_overlay.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/layout/mb_list_item_country.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
24 |
25 |
38 |
39 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/menu/mb_menu_choose_country.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/menu/mb_menu_scan.xml:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/raw/beep.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-lib/src/main/res/raw/beep.mp3
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values-de/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Personalausweis
4 | Neuer Personalausweis
5 | Alter Personalausweis
6 | Führerschein
7 | Reisepass
8 | Aufenthaltsgenehmigung
9 | Befristete Aufenthaltsgenehmigung
10 | Visa
11 | Immigrationsausweis
12 | Militärischer Ausweis
13 | Permanenter Einwohnerausweis
14 | Temporärer Einwohnerausweis
15 | Victoria Fahrerlaubnis
16 | Scannen Sie die Vorderseite des ausgewählten Dokuments oder wählen Sie ein anderes aus.
17 | Scannen Sie die Rückseite.
18 | Scannen Sie das ausgewählte Dokument oder wählen Sie ein anderes aus.
19 | Blendung erkannt. Bewegen Sie die Karte leicht.
20 | Vorder- und Rückseite passen nicht zusammen. Bitte versuchen Sie es erneut.
21 | Haben Sie ein Problem mit dem Scanvorgang?
22 | Stellen Sie sicher, dass Sie über eine gute Beleuchtung verfügen und das richtige Dokument ausgewählt haben.
23 | Weiter
24 | Land wechseln
25 | Die Kamera ist beschäftigt, möglicherweise wird sie von einem anderen Programm verwendet. Schließen Sie andere Programme und / oder starten Sie Ihr Gerät neu.
26 | Fehler beim Starten
27 | Nicht unterstützt
28 | Wählen Sie zwischen mehr als 150 Dokumenten
29 | Suche
30 | Land auswählen
31 | Arbeitsgang
32 | ID (blau & rosa)
33 | Unter-21-ID
34 | Wähler-ID
35 |
36 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values-es/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Documento de identidad
4 | Nuevo documento de identidad
5 | Antiguo documento de identidad
6 | Permiso de conducir
7 | Pasaporte
8 | Permiso de residencia
9 | Permiso de residencia temporal
10 | Visado
11 | Documento de inmigración
12 | Identificación militar
13 | Identificación de residente permanente
14 | Identificación de residente temporal
15 | Licencia de conducir de Victoria
16 | Escanee la parte frontal del documento seleccionado o escoja otro.
17 | Escanee la parte posterior.
18 | Escanee el documento seleccionado o escoja otro.
19 | Se ha detectado un reflejo. Mueva ligeramente la tarjeta.
20 | La parte frontal y la posterior no coinciden. Inténtelo de nuevo.
21 | ¿Tiene problemas para escanear?
22 | Asegúrese de tener una buena iluminación y de haber seleccionado el documento correcto.
23 | Continuar
24 | Cambiar país
25 | La cámara no está disponible, puede que la esté usando otro programa. Cierre los demás programas o reinicie su dispositivo.
26 | Error al iniciar
27 | No es compatible
28 | Elija entre más de 150 documentos
29 | Buscar
30 | Seleccionar país
31 | Pase de trabajo
32 | Id. (azul y rosa)
33 | ID de menor de 21
34 | ID del votante
35 |
36 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values-fr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Carte d\'identité
4 | Nouvelle carte d\'identité
5 | Ancienne carte d\'identité
6 | Permis de conduire
7 | Passeport
8 | Permis de séjour
9 | Permis de séjour temporaire
10 | Visa
11 | Identifiant d\'immigrant
12 | Carte d\'identité militaire
13 | Carte de résident permanent
14 | Carte de résident temporaire
15 | Le permis de conduire de Victoria
16 | Numérisez le recto du document sélectionné ou choisissez-en un autre.
17 | Scannez le verso.
18 | Numérisez le document sélectionné ou choisissez-en un autre.
19 | Éblouissement détecté. Déplacez légèrement la carte.
20 | Le recto et le verso ne correspondent pas. Veuillez réessayer.
21 | Vous avez du mal à scanner ?
22 | Assurez-vous d\'avoir un bon éclairage et d\'avoir sélectionné le bon document.
23 | Continuer
24 | Changer de pays
25 | La caméra est occupée, un autre programme l’utilise peut-être. Fermez les autres programmes et / ou redémarrez votre appareil.
26 | Erreur de démarrage
27 | Non supporté
28 | Choisissez parmi plus de 150 documents
29 | Chercher
30 | Choisissez le pays
31 | Passe professionnel
32 | Identifiant (bleu et rose)
33 | Pièce d\'identité moins de 21 ans
34 | Carte d\'électeur
35 |
36 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values-hdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 8dp
4 | 4dp
5 | 40dp
6 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values-ldrtl/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 180
4 | 4
5 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values-v19/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 80dp
4 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values-xhdpi/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 8dp
5 | 48dp
6 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values/attrs_choose_country.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values/attrs_scan.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #48B2E8
4 | #3A8EBA
5 | #48B2E8
6 |
7 | #FFFFFF
8 | #000000
9 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 8dp
4 | 16dp
5 | 32dp
6 |
7 | 16dp
8 | 56dp
9 |
10 |
11 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 0
4 | 3
5 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ID card
4 | New ID card
5 | Old ID card
6 | Driver\'s license
7 | Passport
8 | Residence permit
9 | Temporary residence permit
10 | Visa
11 | Immigrator ID
12 | Military ID
13 | Permanent resident ID
14 | Temporary resident ID
15 | Victoria driver\'s license
16 | Work pass
17 | Under 21 ID
18 | Voter ID
19 | MyKad
20 | iKad
21 | MyKAS
22 | MyPR
23 | MyTentera
24 | ID (blue & pink)
25 | Scan the front side of the selected document or choose another.
26 | Scan the back side.
27 | Scan the selected document or choose another.
28 | Glare detected. Slightly move the card.
29 | Front and back side do not match. Please try again.
30 | Having trouble scanning?
31 | Make sure you have good lighting and that you\'ve selected the correct document.
32 | Continue
33 | Change country
34 | Camera is busy, another program might be using it. Close other programs and/or restart your device.
35 | Error starting
36 | Not supported
37 | Choose between 150+ documents
38 | Search
39 | Select country
40 |
41 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values/styles_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
15 |
16 |
21 |
22 |
26 |
27 |
28 |
32 |
33 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/blinkid-ui-lib/src/main/res/values/styles_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
25 |
26 |
38 |
39 |
51 |
52 |
54 |
55 |
58 |
59 |
62 |
63 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'kotlin-android'
3 | apply plugin: 'kotlin-android-extensions'
4 |
5 | android {
6 | signingConfigs {
7 | }
8 | compileSdkVersion 28
9 | defaultConfig {
10 | applicationId "com.microblink.blinkidui.sample"
11 | minSdkVersion 16
12 | targetSdkVersion 28
13 | versionCode 1
14 | versionName "1.0"
15 | }
16 | buildTypes {
17 | release {
18 | debuggable true
19 | minifyEnabled true
20 | shrinkResources true
21 | signingConfig signingConfigs.debug
22 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
23 | }
24 | }
25 | }
26 |
27 | dependencies {
28 | implementation fileTree(include: ['*.jar'], dir: 'libs')
29 | implementation project(':blinkid-ui-lib')
30 | }
31 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
23 | -keep class android.support.v7.widget.SearchView { *; }
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
11 |
14 |
15 |
16 |
17 |
18 |
19 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/assets/com.microblink.blinkidui.sample.mblic:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-sample-app/src/main/assets/com.microblink.blinkidui.sample.mblic
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/java/com/microblink/ResultsActivity.java:
--------------------------------------------------------------------------------
1 | package com.microblink;
2 |
3 | import android.os.Bundle;
4 | import android.os.Parcelable;
5 | import android.support.annotation.IdRes;
6 | import android.support.annotation.Nullable;
7 | import android.support.v7.app.AppCompatActivity;
8 | import android.widget.ImageView;
9 | import android.widget.TextView;
10 |
11 | import com.microblink.documentscanflow.recognition.resultentry.ResultEntry;
12 | import com.microblink.documentscanflow.recognition.util.ImageStorage;
13 | import com.microblink.image.Image;
14 |
15 | import java.util.ArrayList;
16 |
17 | public class ResultsActivity extends AppCompatActivity {
18 |
19 | public static final String EXTRA_RESULT_ENTRIES = "com.microblink.resultEntries";
20 |
21 | @Override
22 | protected void onCreate(@Nullable Bundle savedInstanceState) {
23 | super.onCreate(savedInstanceState);
24 | setContentView(R.layout.activity_result);
25 | setupResultFields();
26 | setupImages();
27 | }
28 |
29 | private void setupResultFields() {
30 | StringBuilder textBuilder = new StringBuilder();
31 | Bundle extras = getIntent().getExtras();
32 | if (extras == null) {
33 | return;
34 | }
35 |
36 | ArrayList entries = extras.getParcelableArrayList(EXTRA_RESULT_ENTRIES);
37 | if (entries == null) {
38 | return;
39 | }
40 |
41 | for (Parcelable entry : entries) {
42 | if (entry instanceof ResultEntry) {
43 | ResultEntry stringEntry = (ResultEntry) entry;
44 | textBuilder.append(getString(stringEntry.getKey().getStringResId()));
45 | textBuilder.append(" : ");
46 | textBuilder.append(stringEntry.getValue().toString());
47 | textBuilder.append("\n");
48 | }
49 | }
50 |
51 | TextView resultEntriesTv = findViewById(R.id.results);
52 | resultEntriesTv.setText(textBuilder.toString());
53 | }
54 |
55 | private void setupImages() {
56 | setupImage(R.id.card_front_image, ImageStorage.getFrontSideDocumentImage());
57 | setupImage(R.id.card_back_image, ImageStorage.getBackSideDocumentImage());
58 | setupImage(R.id.face_image, ImageStorage.getFaceImage());
59 | setupImage(R.id.signature_image, ImageStorage.getSignatureImage());
60 | }
61 |
62 | private void setupImage(@IdRes int imageViewId, Image image) {
63 | ImageView imageView = findViewById(imageViewId);
64 | if (image != null) {
65 | imageView.setImageBitmap(image.convertToBitmap());
66 | }
67 | }
68 |
69 | @Override
70 | protected void onDestroy() {
71 | ImageStorage.clearImages();
72 | super.onDestroy();
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/java/com/microblink/SampleApp.java:
--------------------------------------------------------------------------------
1 | package com.microblink;
2 |
3 | import android.app.Application;
4 |
5 | import com.microblink.MicroblinkSDK;
6 | import com.microblink.intent.IntentDataTransferMode;
7 |
8 | public class SampleApp extends Application {
9 |
10 | @Override
11 | public void onCreate() {
12 | super.onCreate();
13 | MicroblinkSDK.setLicenseFile("com.microblink.blinkidui.sample.mblic", this);
14 | MicroblinkSDK.setIntentDataTransferMode(IntentDataTransferMode.PERSISTED_OPTIMISED);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/drawable/custom_bg_choose_country.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/layout/activity_result.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
20 |
21 |
27 |
28 |
34 |
35 |
41 |
42 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/layout/mb_include_splash_overlay.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
17 |
18 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-sample-app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-sample-app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-sample-app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/blinkid-ui-sample-app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #00796B
5 | #004D40
6 | #1DE9B6
7 | #00BFA5
8 |
9 | #424242
10 |
11 | #FFFFFF
12 | #AAFFFFFF
13 |
14 |
15 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | BlinkID UI Sample
3 | Change selected country
4 |
5 |
--------------------------------------------------------------------------------
/blinkid-ui-sample-app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
20 |
21 |
25 |
34 |
35 |
36 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | google()
4 | jcenter()
5 | }
6 | dependencies {
7 | classpath 'com.android.tools.build:gradle:3.3.2'
8 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.10"
9 | classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
10 | }
11 | }
12 |
13 | allprojects {
14 | repositories {
15 | google()
16 | jcenter()
17 | maven { url 'http://maven.microblink.com' }
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlinkID/blinkid-ui-android/0d6d388c816d2b340bad578ea3a5dc4986df3709/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Jul 26 08:47:46 CEST 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':blinkid-ui-sample-app', ':blinkid-ui-lib'
2 |
--------------------------------------------------------------------------------