更新:这是一个硬件问题。它适用于较新的手机。
为项目添加了ZXing.Net.Mobile
和ZXing.Net.Mobile.Forms
。
扫描仪视图和相机看起来很好。 Flash按钮有效。但OnScanResult
永远不会被提出。尝试了各种DataMatrix,PDF417和QR码。
测试手机是HTC M9。
ScannerPage.xaml
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:zxing="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms"
x:Class="MyApp.ScannerPage">
<ContentPage.Content>
<Grid VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<zxing:ZXingScannerView
x:Name="ScannerView"/>
<zxing:ZXingDefaultOverlay
x:Name="ScannerOverlay"
TopText="Hold your phone up to the barcode"
BottomText="Scanning will happen automatically"/>
</Grid>
</ContentPage.Content>
</ContentPage>
ScannerPage.xaml.cs
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ScannerPage : ContentPage
{
public ScannerPage()
{
InitializeComponent();
ScannerView.Options = new ZXing.Mobile.MobileBarcodeScanningOptions
{
PossibleFormats = new List<BarcodeFormat>
{
BarcodeFormat.DATA_MATRIX,
BarcodeFormat.PDF_417,
BarcodeFormat.QR_CODE
},
TryHarder = true
};
ScannerView.OnScanResult += (result) =>
{
var x = 3; // Breakpoint here, never hit
Device.BeginInvokeOnMainThread(async () =>
{
// Stop analysis until we navigate away so we don't keep reading barcodes
//ScannerView.IsAnalyzing = false;
// Show an alert
await DisplayAlert("Scanned Barcode", result.Text, "OK");
});
};
ScannerOverlay.ShowFlashButton = ScannerView.HasTorch;
ScannerOverlay.FlashButtonClicked += (se, ev) => ScannerView.ToggleTorch();
}
protected override void OnAppearing()
{
base.OnAppearing();
ScannerView.IsAnalyzing = true;
ScannerView.IsScanning = true;
}
protected override void OnDisappearing()
{
base.OnDisappearing();
ScannerView.IsScanning = false;
}
}
答案 0 :(得分:0)
可能是硬件问题..低分辨率相机?尝试使用更新的智能手机......
你也可以试试“最简单”的条形码(code128,ean8,ean13 ......)