带有 xamarin 表单的 zxing 扫描仪适用于倒置的移动设备
zxing scanner with xamarin forms works with mobile upside down
我已经在我的 Xamarin 应用程序中成功实现了 Zxing 条码扫描器。我用它来扫描二维码。扫描仅在某些时候成功。主要是扫描仪无法扫描。没有异常抛出,扫描页面继续显示二维码,不触发OnScanResult。 但是,如果我将手机倒置,它始终能够成功扫描。可能是哪里出了问题?
我已经尝试将 AutoRotate 标志设置为两个 true/false 但行为是相同的。
这是扫描码:
var options = new MobileBarcodeScanningOptions
{
AutoRotate = true,
UseFrontCameraIfAvailable = false,
TryHarder = true,
};
options.PossibleFormats.Clear();
options.PossibleFormats.Add(ZXing.BarcodeFormat.QR_CODE);
var overlay = new ZXingDefaultOverlay
{
TopText = "Please scan QR code",
BottomText = "Align the QR code within the frame"
};
var QRScanner = new ZXingScannerPage(options, overlay) { IsScanning = true, IsAnalyzing = true };
QRScanner.OnScanResult += async (qrcode) =>
{
// Stop scanning
QRScanner.IsAnalyzing = false;
QRScanner.IsScanning = false;
// Pop the page and show the result
Device.BeginInvokeOnMainThread(() =>
{
Navigation.PopModalAsync(true);
});
ApiHelper.ApiResult apiresult = await ApiHelper.MarkAttendanceAsync(qrcode.Text);
if (apiresult.success == true)
{
Device.BeginInvokeOnMainThread(() =>
{
DependencyService.Get<IToastService>().ShortAlert(apiresult.message);
});
}
else
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Error", apiresult.message, "OK");
});
}
};
await Navigation.PushModalAsync(QRScanner);
这是我正在使用的示例二维码。可以看到二维码上下都没有干扰元素:
我过去也遇到过类似的问题
请尝试一些实验。
把二维码倒过来试试。这将在您的 phone 中隔离与自动轮换相关的问题。还可以尝试扫描一些其他标准 QR 码,您可以在 Google 图片等中找到它们。该应用在那里可用吗?
如果不是,请尝试增加编码字符串的大小。我观察到 ZXing 有时会遇到较小的代码。这就是为我修复它的原因。
我已经在我的 Xamarin 应用程序中成功实现了 Zxing 条码扫描器。我用它来扫描二维码。扫描仅在某些时候成功。主要是扫描仪无法扫描。没有异常抛出,扫描页面继续显示二维码,不触发OnScanResult。 但是,如果我将手机倒置,它始终能够成功扫描。可能是哪里出了问题?
我已经尝试将 AutoRotate 标志设置为两个 true/false 但行为是相同的。
这是扫描码:
var options = new MobileBarcodeScanningOptions
{
AutoRotate = true,
UseFrontCameraIfAvailable = false,
TryHarder = true,
};
options.PossibleFormats.Clear();
options.PossibleFormats.Add(ZXing.BarcodeFormat.QR_CODE);
var overlay = new ZXingDefaultOverlay
{
TopText = "Please scan QR code",
BottomText = "Align the QR code within the frame"
};
var QRScanner = new ZXingScannerPage(options, overlay) { IsScanning = true, IsAnalyzing = true };
QRScanner.OnScanResult += async (qrcode) =>
{
// Stop scanning
QRScanner.IsAnalyzing = false;
QRScanner.IsScanning = false;
// Pop the page and show the result
Device.BeginInvokeOnMainThread(() =>
{
Navigation.PopModalAsync(true);
});
ApiHelper.ApiResult apiresult = await ApiHelper.MarkAttendanceAsync(qrcode.Text);
if (apiresult.success == true)
{
Device.BeginInvokeOnMainThread(() =>
{
DependencyService.Get<IToastService>().ShortAlert(apiresult.message);
});
}
else
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Error", apiresult.message, "OK");
});
}
};
await Navigation.PushModalAsync(QRScanner);
这是我正在使用的示例二维码。可以看到二维码上下都没有干扰元素:
我过去也遇到过类似的问题
请尝试一些实验。
把二维码倒过来试试。这将在您的 phone 中隔离与自动轮换相关的问题。还可以尝试扫描一些其他标准 QR 码,您可以在 Google 图片等中找到它们。该应用在那里可用吗?
如果不是,请尝试增加编码字符串的大小。我观察到 ZXing 有时会遇到较小的代码。这就是为我修复它的原因。