Skip to content

Commit ef3ff91

Browse files
Merge pull request #40 from regulaforensics/v6.4
Release 6.4
2 parents 309d198 + affff2e commit ef3ff91

13 files changed

Lines changed: 298 additions & 54 deletions

File tree

Samples/Advanced/DocumentReader-Kotlin/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ dependencies {
4343
implementation "androidx.recyclerview:recyclerview:1.2.1"
4444

4545
//noinspection GradleDynamicVersion
46-
implementation 'com.regula.documentreader.core:fullrfid:6.3.+@aar'
46+
implementation 'com.regula.documentreader.core:fullrfid:6.4.+@aar'
4747
//noinspection GradleDynamicVersion
48-
implementation('com.regula.documentreader:api:6.3.+@aar') {
48+
implementation('com.regula.documentreader:api:6.4.+@aar') {
4949
transitive = true
5050
}
5151

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
"objects": [
3+
{
4+
"label": {
5+
"text": "Text With Start & End Margins, Center Text Alignment, 25% Offset From Top",
6+
"fontStyle": "normal",
7+
"fontColor": "#FF000000",
8+
"fontSize": 16,
9+
"fontName": "Arial",
10+
"alignment": "center",
11+
"background": "#AAFFFFFF",
12+
"borderRadius": 8,
13+
"margin": {
14+
"start": 24,
15+
"end": 24
16+
},
17+
"padding": {
18+
"start": 8,
19+
"end": 8,
20+
"top": 8,
21+
"bottom": 8
22+
},
23+
"position": {
24+
"v": 0.5
25+
}
26+
}
27+
},
28+
{
29+
"image": {
30+
"name": "camera",
31+
"background": "#AAFFFFFF",
32+
"borderRadius": 5,
33+
"contentMode": "fill",
34+
"padding": {
35+
"start": 10,
36+
"end": 10,
37+
"top": 10,
38+
"bottom": 10
39+
},
40+
"size": {
41+
"width": 50,
42+
"height": 50
43+
},
44+
"position": {
45+
"h": 1,
46+
"v": 0.75
47+
}
48+
}
49+
},
50+
{
51+
"image": {
52+
"data": "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",
53+
"background": "#AAFFFFFF",
54+
"borderRadius": 5,
55+
"contentMode": "fill",
56+
"padding": {
57+
"start": 10,
58+
"end": 10,
59+
"top": 10,
60+
"bottom": 10
61+
},
62+
"size": {
63+
"width": 50,
64+
"height": 50
65+
},
66+
"position": {
67+
"h": 1,
68+
"v": 1.5
69+
}
70+
}
71+
}
72+
],
73+
"version": "1.0"
74+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"objects": [
3+
{
4+
"label": {
5+
"text": "Text With Start & End Margins, Center Text Alignment, 25% Offset From Top",
6+
"fontStyle": "normal",
7+
"fontColor": "#FF000000",
8+
"fontSize": 16,
9+
"fontName": "Arial",
10+
"alignment": "center",
11+
"background": "#AAFFFFFF",
12+
"borderRadius": 8,
13+
"margin": {
14+
"start": 24,
15+
"end": 24
16+
},
17+
"padding": {
18+
"start": 8,
19+
"end": 8,
20+
"top": 8,
21+
"bottom": 8
22+
},
23+
"position": {
24+
"v": 0.5
25+
}
26+
}
27+
}
28+
],
29+
"version": "1.0"
30+
}

Samples/Advanced/DocumentReader-Kotlin/app/src/main/java/com/regula/documentreader/CommonRecyclerAdapter.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ class CommonRecyclerAdapter(private val items: List<Base>) :
112112
scan = base as Scan
113113
binding.title.text = base.title
114114
binding.root.setOnClickListener {
115-
if (scan.actionType == ACTION_TYPE_CUSTOM) return@setOnClickListener
116115

117116
Helpers.setCustomization(ParamsCustomization())
118117
if (scan.resetFunctionality)

Samples/Advanced/DocumentReader-Kotlin/app/src/main/java/com/regula/documentreader/MainActivity.kt

Lines changed: 103 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.regula.documentreader
22

33
import android.Manifest
4+
import android.animation.ValueAnimator
5+
import android.animation.ValueAnimator.AnimatorUpdateListener
46
import android.app.Activity
57
import android.content.Intent
68
import android.content.pm.PackageManager
@@ -14,6 +16,7 @@ import android.text.style.AbsoluteSizeSpan
1416
import android.text.style.ForegroundColorSpan
1517
import android.text.style.StyleSpan
1618
import android.view.*
19+
import android.view.animation.AccelerateInterpolator
1720
import android.widget.*
1821
import androidx.activity.result.contract.ActivityResultContracts
1922
import androidx.appcompat.app.AlertDialog
@@ -30,30 +33,37 @@ import com.regula.documentreader.Helpers.Companion.PERMISSIONS_REQUEST_READ_EXTE
3033
import com.regula.documentreader.Helpers.Companion.colorString
3134
import com.regula.documentreader.Helpers.Companion.drawable
3235
import com.regula.documentreader.Helpers.Companion.getBitmap
36+
import com.regula.documentreader.Scan.Companion.ACTION_TYPE_CUSTOM
3337
import com.regula.documentreader.Scan.Companion.ACTION_TYPE_GALLERY
3438
import com.regula.documentreader.Scan.Companion.ACTION_TYPE_MANUAL_MULTIPAGE_MODE
3539
import com.regula.documentreader.Scan.Companion.ACTION_TYPE_ONLINE
3640
import com.regula.documentreader.SettingsActivity.Companion.functionality
3741
import com.regula.documentreader.SettingsActivity.Companion.isDataEncryptionEnabled
3842
import com.regula.documentreader.SettingsActivity.Companion.isRfidEnabled
3943
import com.regula.documentreader.SettingsActivity.Companion.useCustomRfidActivity
40-
import com.regula.documentreader.api.DocumentReader
4144
import com.regula.documentreader.api.DocumentReader.Instance
4245
import com.regula.documentreader.api.completions.IDocumentReaderCompletion
4346
import com.regula.documentreader.api.completions.IDocumentReaderPrepareCompletion
4447
import com.regula.documentreader.api.enums.DocReaderAction
4548
import com.regula.documentreader.api.enums.FrameShapeType
46-
import com.regula.documentreader.api.enums.eRFID_Password_Type
47-
import com.regula.documentreader.api.enums.eVisualFieldType
49+
import com.regula.documentreader.api.enums.eRPRM_Lights
4850
import com.regula.documentreader.api.errors.DocumentReaderException
4951
import com.regula.documentreader.api.params.DocReaderConfig
52+
import com.regula.documentreader.api.params.ImageInputData
5053
import com.regula.documentreader.api.parser.DocReaderResultsJsonParser
5154
import com.regula.documentreader.api.results.DocumentReaderResults
5255
import com.regula.documentreader.databinding.ActivityMainBinding
56+
import org.json.JSONException
5357
import org.json.JSONObject
5458
import java.io.Serializable
59+
import java.text.SimpleDateFormat
60+
import java.util.*
61+
5562

5663
class MainActivity : FragmentActivity(), Serializable {
64+
private var mTimerAnimator: ValueAnimator? = null
65+
private var isAnimationStarted: Boolean = false
66+
5767
@Transient
5868
private lateinit var binding: ActivityMainBinding
5969

@@ -213,8 +223,15 @@ class MainActivity : FragmentActivity(), Serializable {
213223

214224
@Transient
215225
private val completion = IDocumentReaderCompletion { action, results, error ->
226+
if(!isAnimationStarted) {
227+
mTimerAnimator?.let {
228+
it.start()
229+
isAnimationStarted = true;
230+
}
231+
}
216232
if (action == DocReaderAction.COMPLETE) {
217233
hideDialog()
234+
cancelAnimation()
218235
if (Instance().functionality().isManualMultipageMode) {
219236
if (results?.morePagesAvailable != 0) {
220237
Instance().startNewPage()
@@ -244,9 +261,14 @@ class MainActivity : FragmentActivity(), Serializable {
244261
Instance().functionality().edit().setManualMultipageMode(false).apply()
245262

246263
Toast.makeText(this, "Scanning was cancelled", Toast.LENGTH_LONG).show()
264+
hideDialog()
265+
cancelAnimation()
247266
}
248-
else if (action == DocReaderAction.ERROR)
267+
else if (action == DocReaderAction.ERROR) {
249268
Toast.makeText(this, "Error:$error", Toast.LENGTH_LONG).show()
269+
hideDialog()
270+
cancelAnimation()
271+
}
250272
}
251273

252274
private fun displayResults(documentReaderResults: DocumentReaderResults) {
@@ -348,6 +370,9 @@ class MainActivity : FragmentActivity(), Serializable {
348370
Helpers.setFunctionality(functionality)
349371
})
350372
rvData.add(Scan("Gallery (recognizeImage)", ACTION_TYPE_GALLERY))
373+
rvData.add(Scan("Recognize images with light type", ACTION_TYPE_CUSTOM) {
374+
startRecognizeImageWithLight()
375+
})
351376

352377
rvData.add(Section("Custom"))
353378
rvData.add(Scan("Online processing", ACTION_TYPE_ONLINE))
@@ -472,6 +497,12 @@ class MainActivity : FragmentActivity(), Serializable {
472497
Instance().customization().edit().setCustomLabelStatus(status).apply()
473498
Instance().customization().edit().setCustomStatusPositionMultiplier(0.5f).apply()
474499
})
500+
rvData.add(Scan("Custom Status & Images") {
501+
Instance().customization().edit().setUiCustomizationLayer(getJsonFromAssets("layer.json")).apply()
502+
})
503+
rvData.add(Scan("Custom Status Animated") {
504+
initAnimation()
505+
})
475506
rvData.add(Section("Custom animations"))
476507
rvData.add(Scan("Help animation image") {
477508
Instance().customization().edit().setShowHelpAnimation(true).apply()
@@ -518,4 +549,72 @@ class MainActivity : FragmentActivity(), Serializable {
518549
var results: DocumentReaderResults? = null
519550
const val ENCRYPTED_RESULT_SERVICE = "https://api.regulaforensics.com/api/process"
520551
}
552+
553+
private fun getJsonFromAssets(name: String): JSONObject? {
554+
val inputStream = this@MainActivity.assets.open(name)
555+
val jsonString = Scanner(inputStream).useDelimiter("\\A").next()
556+
try {
557+
return JSONObject(jsonString)
558+
} catch (e: JSONException) {
559+
e.printStackTrace()
560+
}
561+
return null
562+
}
563+
564+
private fun cancelAnimation() {
565+
mTimerAnimator?.let {
566+
it.cancel()
567+
isAnimationStarted = false
568+
mTimerAnimator = null
569+
}
570+
Instance().customization().edit().setUiCustomizationLayer(null).apply()
571+
}
572+
573+
private fun initAnimation() {
574+
isAnimationStarted = false;
575+
val jsonObject: JSONObject? = getJsonFromAssets("layer_animation.json")
576+
updatePosition(jsonObject, 0.5f)
577+
Instance().customization().edit().setUiCustomizationLayer(jsonObject).apply()
578+
mTimerAnimator = ValueAnimator.ofFloat(0.5f, 1.5f)
579+
mTimerAnimator?.let {
580+
it.duration = 2500
581+
it.interpolator = AccelerateInterpolator()
582+
it.repeatMode = ValueAnimator.REVERSE
583+
it.repeatCount = 20
584+
it.addUpdateListener(AnimatorUpdateListener { animation ->
585+
updatePosition(jsonObject, animation.animatedValue as Float)
586+
Instance().customization().edit().setUiCustomizationLayer(jsonObject)
587+
.applyImmediately(this@MainActivity)
588+
})
589+
}
590+
}
591+
592+
private fun updatePosition(jsonObject: JSONObject?, position: Float) {
593+
jsonObject?.let {
594+
val text = "Custom label that showing current time:" + SimpleDateFormat("HH:mm:ss")
595+
.format(Date())
596+
(it.getJSONArray("objects")[0] as JSONObject).getJSONObject("label")
597+
.getJSONObject("position").put("v", position.toDouble())
598+
(it.getJSONArray("objects")[0] as JSONObject).getJSONObject("label")
599+
.put("text", text)
600+
}
601+
}
602+
603+
private fun startRecognizeImageWithLight() {
604+
// For FULL_AUTH processing you need to do implementation in gradle com.regula.documentreader.core:fullauthrfid
605+
// Set databaseID to 'FullAuth' in method prepareDatabase
606+
//Instance().processParams().scenario = Scenario.SCENARIO_FULL_AUTH
607+
val image1 = BitmapFactory.decodeResource(resources, R.drawable.white)
608+
val image2 = BitmapFactory.decodeResource(resources, R.drawable.uv)
609+
val image3 = BitmapFactory.decodeResource(resources, R.drawable.ir)
610+
val imageData1 = ImageInputData(image1, eRPRM_Lights.RPRM_LIGHT_WHITE_FULL)
611+
val imageData2 = ImageInputData(image2, eRPRM_Lights.RPRM_LIGHT_UV)
612+
val imageData3 = ImageInputData(image3, eRPRM_Lights.RPRM_Light_IR_Full)
613+
recognizeSerialImages(imageData1, imageData2, imageData3)
614+
}
615+
616+
private fun recognizeSerialImages(vararg imageInputData: ImageInputData) {
617+
loadingDialog = showDialog("Processing images")
618+
Instance().recognizeImages(imageInputData, completion)
619+
}
521620
}
Binary file not shown.
Binary file not shown.
Binary file not shown.

Samples/Basic/DocumentReader-sample/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ dependencies {
3131
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
3232
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
3333

34-
implementation 'com.regula.documentreader.core:fullrfid:6.3.+@aar'
35-
implementation('com.regula.documentreader:api:6.3.+@aar') {
34+
implementation 'com.regula.documentreader.core:fullrfid:6.4.+@aar'
35+
implementation('com.regula.documentreader:api:6.4.+@aar') {
3636
transitive = true;
3737
}
3838
}

Samples/Basic/DocumentReader-sample/app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
<uses-permission android:name="android.permission.NFC" />
66
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
77
<uses-permission android:name="android.permission.INTERNET" />
8+
<!--Manifest.permission.READ_PHONE_STATE is required if you are using a license by device Id-->
9+
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
810

911
<application
1012
android:allowBackup="true"

0 commit comments

Comments
 (0)