Código-fonte
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("O usuário cancelou a operação")
}
super.onActivityResult(requestCode, resultCode, data)
}
private fun onSdkFailure(sdkFailure: SDKFailure?) {
when (sdkFailure) {
is InvalidTokenReason -> {
println("SDKFailure: O token inserido como parâmetro não é válido, revise-o por favor")
}
is PermissionReason -> {
println("SDKFailure: O usuário não concedeu as permissões necessárias")
}
is AvailabilityReason -> {
println("SDKFailure: As instruções são enviadas em: ${sdkFailure.message}")
}
is NetworkReason -> {
println("SDKFailure: Houve um problema com a conexão com a internet")
}
is ServerReason -> {
println("SDKFailure: Houve um problema em qualquer comunicação com os servidores da CAF, avise-nos!")
}
is SecurityReason -> {
println("SDKFailure: Houve um problema de segurança no dispositivo do usuário")
}
is StorageReason -> {
println("SDKFailure: Houve um problema com o armazenamento interno do dispositivo do usuário")
}
is LibraryReason -> {
println("SDKFailure: Houve um problema com a biblioteca interna")
}
else -> {
println("SDKFailure: Motivo desconhecido")
}
}
}
companion object {
private const val REQUEST_CODE = 123456
}
}Atualizado

