I am using Xamarin forms to write an iOS app and using the ZXing library to scan barcodes. I am trying to read a driver's license (PDF417) barcode, but the library is not able to recognize that barcode.
If I include UPC or other barcodes in the PossibleFormats, they are scanned correctly.
I am also certain the barcode I am trying to read is PDF417 barcode because Scandit is able to recognize it correctly while using only PDF417 barcode.
Here is the code I am using. What do I need to change so that the PDF417 barcode is recognized correctly?
async void Handle_Clicked (object sender, System.EventArgs e)
{
MobileBarcodeScanningOptions options = new MobileBarcodeScanningOptions ();
options.PossibleFormats = new List<ZXing.BarcodeFormat> () {
ZXing.BarcodeFormat.PDF_417
};
options.TryHarder = true;
var scanPage = new ZXingScannerPage (options);
scanPage.OnScanResult += (result) => {
// Stop scanning
scanPage.IsScanning = false;
// Pop the page and show the result
Device.BeginInvokeOnMainThread (async () => {
await Navigation.PopAsync ();
await DisplayAlert ("Scanned Barcode", result.Text, "OK");
});
};
// Navigate to our scanner page
await Navigation.PushAsync (scanPage);
}
I ran into this exact same issue a few days ago and fixed it with the following. In the
MobileBarcodeScanningOptions
class there's a property of typeCameraResolutionSelectorDelegate
calledCameraResolutionSelector
. You can set this to return a higher camera resolution from a list of available resolutions. So my instantiation ofMobileBarcodeScanningOptions
looks like this:And my
HandleCameraResolutionSelectorDelegate
:That's all I needed to change to get a driver's license (PDF417) barcode to scan.
Here's the source code for
MobileBarcodeScanningOptions.cs
from ZXing github.