Обновление: это аппаратная проблема.Это работает на более новом телефоне.
Добавлено ZXing.Net.Mobile
и ZXing.Net.Mobile.Forms
для проецирования.
Вид сканера и камера выглядят нормально.Флеш кнопка работает.Но 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;
}
}