protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (requestCode == ACTIVITY_REQUEST_ID && resultCode == Result.Ok) { // obtain image view that will display image of the document ImageView documentImageView = this.FindViewById <ImageView>(Resource.Id.documentImageView); // unfortunately, C# does not support covariant return types, so binding // of AAR loses the return type of the Java's GetResult method. Therefore, a cast is required. // This is always a safe cast, since the original object in Java is of correct type - type // information was lost during conversion to C# due to https://github.com/xamarin/java.interop/pull/216 var mrtdResult = (MrtdRecognizer.Result)mrtdRecognizer.GetResult(); var eudlResult = (EudlRecognizer.Result)eudlRecognizer.GetResult(); var usdlResult = (UsdlRecognizer.Result)usdlRecognizer.GetResult(); var message = ""; // we can check ResultState property of the Result to see if the result contains scanned information if (mrtdResult.ResultState == Recognizer.Result.State.Valid) { message += "MRTD recognizer result:\n" + "PrimaryID: " + mrtdResult.MrzResult.PrimaryId + "\n" + "SecondaryID: " + mrtdResult.MrzResult.SecondaryId + "\n" + "Date of birth: " + mrtdResult.MrzResult.DateOfBirth.Date.Day + "." + mrtdResult.MrzResult.DateOfBirth.Date.Month + "." + mrtdResult.MrzResult.DateOfBirth.Date.Year + ".\n"; // image is now part of the result - no need for having separate image listener documentImageView.SetImageBitmap(mrtdResult.FullDocumentImage.ConvertToBitmap()); } if (eudlResult.ResultState == Recognizer.Result.State.Valid) { message += "EUDL recognizer result:\n" + "First name: " + eudlResult.FirstName + "\n" + "Last name: " + eudlResult.LastName + "\n" + "Birth data: " + eudlResult.BirthData + "\n" + "Country: " + eudlResult.Country.ToString() + "\n"; documentImageView.SetImageBitmap(eudlResult.FullDocumentImage.ConvertToBitmap()); } if (usdlResult.ResultState == Recognizer.Result.State.Valid) { message += "USDL recognizer result:\n" + "First name: " + usdlResult.FirstName + "\n" + "Last name: " + usdlResult.LastName + "\n" + "Address: " + usdlResult.Address + "\n"; } AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.SetTitle("BlinkID Results"); alert.SetPositiveButton("OK", (senderAlert, args) => { }); alert.SetMessage(message); alert.Show(); } }