Source Code
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.startDocumentDetectorButton.setOnClickListener {
startDocumentDetector()
}
}
private fun startDocumentDetector(upload: Boolean = false) {
val documentDetector = buildDocumentDetector(upload)
val intent = Intent(this, DocumentDetectorActivity::class.java)
intent.putExtra(DocumentDetector.PARAMETER_NAME, documentDetector)
startActivityForResult(intent, REQUEST_CODE)
}
private fun buildDocumentDetector(upload: Boolean = false): DocumentDetector? =
DocumentDetector.Builder("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI2NTRjZmFlMWM5YTM0NTAwMDg4YzIwODUifQ.maH9fynasnaRR2Hm5PxQ1XzLxlVZiZSvpVDD9zVtfgs")
.setDocumentCaptureFlow(
arrayOf(
DocumentDetectorStep(Document.CNH_FRONT),
DocumentDetectorStep(Document.CNH_BACK),
)
)
.setUploadSettings(
UploadSettings(upload)
)
.setPersonId("12312312312")
.setUseDeveloperMode(true)
.setUseAdb(true)
.setUseDebug(true)
.build()
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
val result = data?.getSerializableExtra(
DocumentDetectorResult.PARAMETER_NAME
) as DocumentDetectorResult
if (!result.wasSuccessful()) {
result.sdkFailure?.let {
onSdkFailure(it)
}
return
}
println("DocumentDetectorResult: $result")
} else {
println("The user canceled the operation")
}
super.onActivityResult(requestCode, resultCode, data)
}
private fun onSdkFailure(sdkFailure: SDKFailure?) {
when (sdkFailure) {
is InvalidTokenReason -> {
println("SDKFailure: The token entered as a parameter is not valid, please revise it")
}
is PermissionReason -> {
println("SDKFailure: The user did not grant the necessary permissions")
}
is AvailabilityReason -> {
println("SDKFailure: Instructions are sent in: ${sdkFailure.message}")
}
is NetworkReason -> {
println("SDKFailure: There was a problem with the internet connection")
}
is ServerReason -> {
println("SDKFailure: There was a problem in any communication with the CAF servers, let us know!")
}
is SecurityReason -> {
println("SDKFailure: There was a security problem on the user's device")
}
is StorageReason -> {
println("SDKFailure: There was a problem with the internal storage of the user's device")
}
is LibraryReason -> {
println("SDKFailure: There was a problem with the internal library")
}
else -> {
println("SDKFailure: Unknown reason")
}
}
}
companion object {
private const val REQUEST_CODE = 123456
}
}
Last updated