Page Properties | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
Info |
---|
We recommend using Capture Flow with Fragments instead of activities. |
In order to use the capture flow with activities, follow these steps:
Request camera access.
Configure the capture feature using the
CaptureConfiguration
.Register an activity result handler with the
CaptureFlowContract()
.Launch the SDK with
GiniBank.startCaptureFlow()
.Handle the extraction results (e.g. in the
registerForActivityResult
).Send the final transfer summary values to Gini by calling
GiniBank.sendTransferSummary()
method which will be used to improve the future extraction accuracyClean up the SDK by calling
GiniBank.releaseCapture()
while also providing the required extraction feedback to improve future extraction accuracy. which will release the resources used by SDK.
Follow these recommendations:
Note |
---|
|
...
Drawio | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Info |
---|
Check out an example app to see how an integration can look like. |
...
CaptureResult.Success
A document was analyzed analysed and the extractions are available in the properties of the CaptureResult.Success
object.
...
Code Block | ||
---|---|---|
| ||
// Use the androidx's Activity Result API to register a handler for the capture result. val captureLauncher = registerForActivityResult(CaptureFlowContract()) { result: CaptureResult -> when (result) { is CaptureResult.Success -> { handleExtractionsshowExtractions(result.specificExtractions) } is CaptureResult.Error -> { when (result.value) { is ResultError.Capture -> { val captureError: GiniCaptureError = (result.value as ResultError.Capture).giniCaptureError handleCaptureError(captureError) } is ResultError.FileImport -> { // See the File Import section on the Capture Features page for more details. val fileImportError = result.value as ResultError.FileImport handleFileImportError(fileImportError) } } GiniBank.releaseCapture(this) } this, "", CaptureResult.Empty -> { "", "", "", "", Amount.EMPTYhandleNoExtractions() GiniBank.releaseCapture(this) } CaptureResult.EmptyCancel -> { handleNoExtractionshandleCancellation() GiniBank.releaseCapture(this) } this, "", CaptureResult.EnterManually -> { handleEnterManually() "", "", "", "", Amount.EMPTY GiniBank.releaseCapture(this) ) } } } fun startGiniBankSDK() { // Make sure CaptureResult.Cancel -> { camera permission has been already granted at this point. // handleCancellation()Instantiate the networking implementation. val networkService: GiniCaptureNetworkService = GiniBank.releaseCapture(... // Configure the capture feature. GiniBank.setCaptureConfiguration( this, "", CaptureConfiguration( "", "", "", "", Amount.EMPTYnetworkService = networkService, ... ) ) } ) CaptureResult.EnterManually -> { // Launch and wait for the result. GiniBank.startCaptureFlow(captureLauncher) } fun handleEnterManually()stopGiniBankSDKWithTransferSummary(paymentRecipient: String, GiniBank.releaseCapture( this, "", paymentReference: String, "", "", "", "", Amount.EMPTY ) } }paymentPurpose: }String, fun launchGiniCapture() { // Make sure camera permission has been already granted at this point. // Instantiate the networking implementation. val networkService: GiniCaptureNetworkService = ... iban: String, // Configure the capture feature. GiniBank.setCaptureConfiguration( CaptureConfiguration( networkService = networkService, bic: String, ... ) ) // Launch and wait for the result. GiniBank.startCaptureFlow(captureLauncher) }amount: Amount void stopGiniBankSDK() { // After the user has seen and potentially corrected the extractions, send the final // cleanup the SDK// while passing in the final extractiontransfer summary values to Gini // which will be used as feedback to improve the future extraction accuracy: GiniBank.releaseCapturesendTransferSummary(this, paymentRecipient, paymentReference, paymentPurpose, iban, bic, amount ) // cleanup the capture SDK after sending the transfer summary GiniBank.releaseCapture(this) } |