void launchGiniCapture() {
// Make sure camera permission has been already granted at this point.
// Check that the device fulfills the requirements.
RequirementsReport report = GiniCaptureRequirements.checkRequirements((Context) this);
if (!report.isFulfilled()) {
handleUnfulfilledRequirements(report);
return;
}
// Instantiate the networking implementations.
GiniCaptureNetworkService networkService = ...
// Configure GiniCapture and create a new singleton instance.
GiniCapture.newInstance()
.setGiniCaptureNetworkService(networkService)
...
.build();
// Launch the CameraActivity and wait for the result.
Intent intent = new Intent(this, CameraActivity.class);
startActivityForResult(intent, GINI_CAPTURE_REQUEST);
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode,
final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GINI_CAPTURE_REQUEST) {
switch (resultCode) {
case Activity.RESULT_CANCELED:
GiniCapture.cleanup(this, "", "",
"", "","", Amount.EMPTY);
break;
case Activity.RESULT_OK:
// Retrieve the extractions
Bundle extractionsBundle = data.getBundleExtra(
CameraActivity.EXTRA_OUT_EXTRACTIONS);
// Retrieve the extractions from the extractionsBundle
Map<String, GiniCaptureSpecificExtraction> extractions = new HashMap<>();
for (String extractionLabel : extractionsBundle.keySet()) {
GiniCaptureSpecificExtraction extraction = extractionsBundle.getParcelable(extractionLabel);
extractions.put(extractionLabel, extraction);
}
handleExtractions(extractions);
break;
case CameraActivity.RESULT_ERROR:
// Something went wrong, retrieve and handle the error
final GiniCaptureError error = data.getParcelableExtra(
CameraActivity.EXTRA_OUT_ERROR);
if (error != null) {
handleError(error);
}
GiniCapture.cleanup(this, "", "",
"", "","", Amount.EMPTY);
break;
case CameraActivity.RESULT_ENTER_MANUALLY:
handleEnterManually();
GiniCapture.cleanup(this, "", "",
"", "","", Amount.EMPTY);
break;
}
}
}
void stopGiniCaptureSDK() {
// After the user has seen and potentially corrected the extractions
// cleanup the SDK while passing in the final extraction values
// which will be used as feedback to improve the future extraction accuracy:
GiniCapture.cleanup((Context) this,
paymentRecipient,
paymentReference,
paymentPurpose,
iban,
bic,
amount
)
} |