Я занимаюсь разработкой приложения с использованием Xamarin.Forms и Visual Studio, а также пытаюсь использовать пакеты Nuget ZXing.Net.Mobile и ZXing.Net.Mobile.Forms для сканирования DataMatrix.
По умолчанию все работает нормально, кроме случаев, когда DataMatrix печатаются с использованием инвертированных цветов.Вот почему я попытался использовать опцию TryInverted, но, похоже, эта опция не работает с устройствами Apple.
Действительно, с помощью Android мое приложение может обнаруживать DataMatrix даже при инвертированных цветах, а iPhone 5S - нет, только когда цвета не инвертированы.(Я почти уверен, потому что я пытался использовать один и тот же DataMatrix в обеих конфигурациях, инвертированных цветов и нет).Ниже приведен мой код,
var scan = DependencyService.Get<IDScan>();
var options = new ZXing.Mobile.MobileBarcodeScanningOptions();
options.TryInverted = true;
options.TryHarder = true; /* Don't really know if it's needed ?*/
options.AutoRotate = true;
options.PureBarcode = false; /* Don't really know what is it ?*/
options.PossibleFormats = new List<ZXing.BarcodeFormat>() {
ZXing.BarcodeFormat.DATA_MATRIX, ZXing.BarcodeFormat.QR_CODE
};
var result = await scan.GetResult(options);
if (result != null)
{
await App.Current.MainPage.DisplayAlert(
"Scan result",
"Format :" + result.BarcodeFormat +
"\nNumBits : " + result.NumBits +
"\nValue : " + result.Text,
"OK"
);
}
, и мой iOs ScanActivity для получения результата и сканера,
public class ScanActivity : IDScan
{
ZXing.Mobile.MobileBarcodeScanner scanner;
public ScanActivity()
{
Debug.WriteLine("Scan Android1");
var window = UIKit.UIApplication.SharedApplication.KeyWindow;
var vc = window.RootViewController;
while (vc.PresentedViewController != null)
{
vc = vc.PresentedViewController;
}
scanner = new ZXing.Mobile.MobileBarcodeScanner(vc);
}
public ZXing.Mobile.MobileBarcodeScanner GetScanner()
{
return scanner;
}
public async Task<ZXing.Result> GetResult(ZXing.Mobile.MobileBarcodeScanningOptions options)
{
var result = await scanner.Scan(options,true);
return result;
}
}