Skip to content

Commit

Permalink
added v11.4.11
Browse files Browse the repository at this point in the history
  • Loading branch information
sMaltsevAcuant committed Mar 23, 2021
1 parent 7d0300f commit 9bf43bb
Show file tree
Hide file tree
Showing 11 changed files with 44 additions and 32 deletions.
53 changes: 31 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Acuant Android SDK v11.4.10
**February 2021**
# Acuant Android SDK v11.4.11
**March 2021**

See [https://github.com/Acuant/AndroidSDKV11/releases](https://github.com/Acuant/AndroidSDKV11/releases) for release notes.

Expand Down Expand Up @@ -189,18 +189,18 @@ The SDK includes the following modules:
- Add the following dependencies

implementation 'com.acuant:acuantcommon:11.4.10'
implementation 'com.acuant:acuantcamera:11.4.10'
implementation 'com.acuant:acuantimagepreparation:11.4.10'
implementation 'com.acuant:acuantdocumentprocessing:11.4.10'
implementation 'com.acuant:acuantechipreader:11.4.10'
implementation 'com.acuant:acuantfacematch:11.4.10'
implementation 'com.acuant:acuanthgliveness:11.4.10'
implementation ('com.acuant:acuantipliveness:11.4.10'){
implementation 'com.acuant:acuantcommon:11.4.11'
implementation 'com.acuant:acuantcamera:11.4.11'
implementation 'com.acuant:acuantimagepreparation:11.4.11'
implementation 'com.acuant:acuantdocumentprocessing:11.4.11'
implementation 'com.acuant:acuantechipreader:11.4.11'
implementation 'com.acuant:acuantfacematch:11.4.11'
implementation 'com.acuant:acuanthgliveness:11.4.11'
implementation ('com.acuant:acuantipliveness:11.4.11'){
transitive = true
}
implementation 'com.acuant:acuantfacecapture:11.4.10'
implementation 'com.acuant:acuantpassiveliveness:11.4.10'
implementation 'com.acuant:acuantfacecapture:11.4.11'
implementation 'com.acuant:acuantpassiveliveness:11.4.11'

- Acuant also relies on Google Play services dependencies, which are pre-installed on almost all Android devices.

Expand Down Expand Up @@ -262,7 +262,7 @@ The SDK includes the following modules:
## Initializing the SDK ##

Before you use the SDK, you need to initialize it either by using the credentials saved on the device or by using bearer tokens (provided by an external server).
Before you use the SDK, you must initialize it, either by using the credentials saved on the device or by using bearer tokens (provided by an external server).

**Note:** If you are *not* using a configuration file for initialization, then use the following statement (providing appropriate credentials for *username*, *password*, and *subscription ID*) and leave the "PATH/TO/CONFIG/FILENAME.XML" in the initialize method as ""

Expand All @@ -276,7 +276,7 @@ Before you use the SDK, you need to initialize it either by using the credential
"https://acas.acuant.net",
"https://ozone.acuant.net")

1. Using credentials saved on a device:
* Using credentials saved on a device:

//Specify the path to the previously created XML file, using “assets” as root
Expand All @@ -293,7 +293,7 @@ Before you use the SDK, you need to initialize it either by using the credential
Log.e("Acuant Error", e.toString())
}
2. Using bearer tokens:
* Using bearer tokens:

//Specify the path to the previously created XML file, using “assets” as root
Expand Down Expand Up @@ -335,7 +335,7 @@ Here is the interface for the initialize listener:
## AcuantCamera ##

### Capturing a document ###
**Note:** **AcuantCamera** is dependent on **AcuantImagePreparation** and **AcuantCommon**.
**Note:** **AcuantCamera** is dependent on **AcuantImagePreparation** and **AcuantCommon**.

1. Start camera activity:

Expand All @@ -360,7 +360,7 @@ Here is the interface for the initialize listener:
)

startActivityForResult(cameraIntent, REQUEST_CODE)
**Note:** When the camera is launched, the image processing speed is automatically checked.
**Note:** When the camera is launched, the image processing speed is automatically checked.

* Live document detection and auto capture features are enabled if the device supports a speed of at least 130ms.
* For devices that don't meet the processing threshold, tap to capture will be enabled. Live document detection and auto capture features are disabled and switched to tap to capture. The user will have to manually capture the document.
Expand All @@ -378,7 +378,7 @@ Here is the interface for the initialize listener:
### Capturing MRZ data in a passport document ###

**Note:** To use the MRZ features, your credentials must be enabled to use Ozone.
**Note:** To use the MRZ features, your credentials must be enabled to use Ozone.

- **Initialization**

Expand Down Expand Up @@ -416,10 +416,12 @@ Here is the interface for the initialize listener:
val result = data?.getSerializableExtra(ACUANT_EXTRA_MRZ_RESULT) as MrzResult
}
}
----------
## AcuantImagePreparation ##

**Note:** **AcuantImagePreparation** uses @Keep annotations. These are supported by the default Android configuration. If you override or modify the Android ProGuard file, then support for these annotations must be included.
**Note:** **AcuantImagePreparation** uses @Keep annotations. These are supported by the default Android configuration. If you override or modify the Android ProGuard file, then support for these annotations must be included.

This section describes how to use **AcuantImagePreparation**.

Expand All @@ -444,7 +446,8 @@ This section describes how to use **AcuantImagePreparation**.
fun onError(error: Error)
}
The AcuantImage can be used to verify the crop, sharpness, and glare as well as upload in the next step:
The **AcuantImage** can be used to verify the crop, sharpness, and glare of the image, and then upload the document in the next step (see [AcuantDocumentProcessing](#acuantdocumentprocessing)).


class AcuantImage {
val image: Bitmap
Expand All @@ -456,14 +459,20 @@ This section describes how to use **AcuantImagePreparation**.
val aspectRatio: Float
val rawBytes: ByteArray
}

If the sharpness value is greater than 50, then the image is considered sharp (not blurry). If the glare value is 100, then the image does not contain glare. If the glare value is 0, then image contains glare.

Preferably, the image must be sharp and not contain glare to get best results in authentication and data extraction. When the image has glare, low sharpness, or both, retake the image.

Acuant recommends against modifying and/or compressing the resulting AcuantImage.image before uploading. Modifying and/or compressing the AcuantImage.image may negatively affect authentication and data extraction results.
**Note:** If you are using an independent orchestration layer, then make sure you supply AcuantImage.rawBytes not just AcuantImage.image.

-------------------------------------

## AcuantDocumentProcessing ##

After you capture a document image is captured, use the following steps to process the image.
After you capture a document image and completed crop, it can be processed using the following steps.

**Note:** If an upload fails with an error, retry the image upload using a better image.

Expand Down Expand Up @@ -906,7 +915,7 @@ Acuant does not provide obfuscation tools. See the Android developer documentati

-------------------------------------

**Copyright 2020 Acuant Inc. All rights reserved.**
**Copyright 2021 Acuant Inc. All rights reserved.**

This document contains proprietary and confidential information and creative works owned by Acuant and its respective licensors, if any. Any use, copying, publication, distribution, display, modification, or transmission of such technology, in whole or in part, in any form or by any means, without the prior express written permission of Acuant is strictly prohibited. Except where expressly provided by Acuant in writing, possession of this information shall not be construed to confer any license or rights under any Acuant intellectual property rights, whether by estoppel, implication, or otherwise.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ abstract class AcuantBaseCameraFragment : Fragment() {

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
file = File(activity!!.externalCacheDir, "${UUID.randomUUID()}.jpg")
file = File(activity!!.cacheDir, "${UUID.randomUUID()}.jpg")
}

override fun onResume() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class MrzParser{
}

var startPos = 0
resultLocal.passportNumber = line.substring(startPos, startPos+9)
resultLocal.passportNumber = line.substring(startPos, startPos+9).replace("<", "")
startPos+=9

var check1 = line[startPos]
Expand Down
Binary file modified acuantcommon/acuantcommon.aar
Binary file not shown.
Binary file modified acuantdocumentprocessing/acuantdocumentprocessing.aar
Binary file not shown.
Binary file modified acuantechipreader/acuantechipreader.aar
Binary file not shown.
Binary file modified acuantimagepreparation/acuantimagepreparation.aar
Binary file not shown.
2 changes: 1 addition & 1 deletion app/src/main/java/com/acuant/sampleapp/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener, IP
callback.onInitializeSuccess()
}
else{
if(Credential.get().secureAuthorizations.ozoneAuth) {
if(Credential.get().secureAuthorizations.ozoneAuth || Credential.get().secureAuthorizations.chipExtract) {
findViewById<Button>(R.id.main_mrz_camera).visibility = View.VISIBLE
}
getFacialLivenessCredentials(callback)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ class NfcConfirmationActivity : AppCompatActivity(), NfcTagReadingListener {
val dateOfExpiry = mrzDOE.text.toString()
if (docNumber != "" && dateOfBirth.length == 6 && dateOfExpiry.length == 6) {
AcuantEchipReader.readNfcTag(this, intent, Credential.get(), docNumber, dateOfBirth,
dateOfExpiry, this)
dateOfExpiry, performOzoneAuthentication = true, tagListener = this)
} else {
setProgress(true, HelpState.Failed, "Error in formatting for Document number, Date of birth, or Expiration date. Fix and retry." )
}
Expand Down
13 changes: 8 additions & 5 deletions app/src/main/java/com/acuant/sampleapp/NfcResultActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,14 @@ class NfcResultActivity : AppCompatActivity() {
key = "Data group hash authentication"
addBooleanField(key, data.passportDataValid)

key = "Document signer (Ozone)"
addBooleanField(key, data.passportSigned == NfcData.OzoneResultStatus.SUCCESS)

key = "Country Signer (Ozone)"
addBooleanField(key, data.passportCountrySigned == NfcData.OzoneResultStatus.SUCCESS)
if (data.passportSigned != NfcData.OzoneResultStatus.NOT_PERFORMED) {
key = "Document signer (Ozone)"
addBooleanField(key, data.passportSigned == NfcData.OzoneResultStatus.SUCCESS)
}
if (data.passportCountrySigned != NfcData.OzoneResultStatus.NOT_PERFORMED) {
key = "Country Signer (Ozone)"
addBooleanField(key, data.passportCountrySigned == NfcData.OzoneResultStatus.SUCCESS)
}
}

private fun addField(key: String, value: String?) {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/acuant/sampleapp/ResultActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class ResultActivity : AppCompatActivity() {
textViewCardInfo = findViewById(R.id.textViewLicenseCardInfo)
nfcScanningBtn = findViewById(R.id.buttonNFC)

if(ProcessedData.cardType.equals("ID3",true) && Credential.get().secureAuthorizations.ozoneAuth){
if(ProcessedData.cardType.equals("ID3",true) && (Credential.get().secureAuthorizations.ozoneAuth || Credential.get().secureAuthorizations.chipExtract)){
nfcScanningBtn.visibility = View.VISIBLE
}else{
nfcScanningBtn.visibility = View.GONE
Expand Down

0 comments on commit 9bf43bb

Please sign in to comment.