2016-07-29 11 views
1

UPDATE:ZXing.Mobile - Как изменить размер сканера камеры?

Я попытался реализации этого в методе App.cs называется OpenCameraScanner (вы могли бы назвать это по нажатию кнопки на страницу, с которой вы хотите сканировать):

App.cs 
------------------------------------------------ 
public static ZXingScannerPage ScanPage; 
public static ZXing.Result ScanResult; 

public static async void OpenCameraScanner() 
{ 
    ScanPage = new ZXingScannerPage(customOverlay: customOverlay); 
    ScanPage.OnScanResult += (result) => 
    { 
     ScanPage.IsScanning = false; 
     ScanResult = result; 

     Device.BeginInvokeOnMainThread(() => 
     { 
      App.CurrentApp.CurrentPage.Navigation.PopModalAsync(); 
      App.CurrentApp.CurrentPage.DisplayAlert("Scanned Barcode", result.Text, "OK"); 
     }); 
    }; 
    var scanPage = new NavigationPage(ScanPage); 
    await App.CurrentApp.CurrentPage.Navigation.PushModalAsync(ScanPage); 
} 

Однако, когда этот метод вызывается, экран, который открывается, пустой белый, и вы не видите его вид камеры. Не знаете почему?


Я использую ZXing.Mobile в проекте Xamarin.Forms (для прошивки прямо сейчас) для функциональных возможностей сканирования камеры на IPad.

В настоящее время он у меня работает прекрасно со следующими 2 строки:

var scanner = new ZXing.Mobile.MobileBarcodeScanner(); 
var result = await scanner.Scan(); 

Однако, когда камера открыта для сканирования, она занимает весь экран IPad, который является действительно большим.

Вопрос: Есть ли способ настроить размер наложения на камеру? (Так что это не полный экран)

Я вижу, что метод scanner.Scan() принимает необязательный параметр опции типа ZXing.Mobile.MobileBarcodeScanningOptions - я пытался играть с этим, но единственно возможной соответствующей опцией есть CameraResolutionSelector - но у меня действительно трудно найти документацию по этому поводу.

ответ

1

Существует ZXing образец приложение, которое показывает, как встроить ZXingScannerView и ZXingDefaultOverlay в Xamarin.Form «s Grid:

https://github.com/Redth/ZXing.Net.Mobile/blob/master/Samples/Forms/Core/CustomScanPage.cs

public CustomScanPage() : base() 
{ 
    zxing = new ZXingScannerView 
    { 
     HorizontalOptions = LayoutOptions.FillAndExpand, 
     VerticalOptions = LayoutOptions.FillAndExpand, 
     AutomationId = "zxingScannerView", 
    }; 
    zxing.OnScanResult += (result) => 
     Device.BeginInvokeOnMainThread (async() => { 

      // Stop analysis until we navigate away so we don't keep reading barcodes 
      zxing.IsAnalyzing = false; 

      // Show an alert 
      await DisplayAlert ("Scanned Barcode", result.Text, "OK"); 

      // Navigate away 
      await Navigation.PopAsync(); 
     }); 

    overlay = new ZXingDefaultOverlay 
    { 
     TopText = "Hold your phone up to the barcode", 
     BottomText = "Scanning will happen automatically", 
     ShowFlashButton = zxing.HasTorch, 
     AutomationId = "zxingDefaultOverlay", 
    }; 
    overlay.FlashButtonClicked += (sender, e) => { 
     zxing.IsTorchOn = !zxing.IsTorchOn; 
    }; 
    var grid = new Grid 
    { 
     VerticalOptions = LayoutOptions.FillAndExpand, 
     HorizontalOptions = LayoutOptions.FillAndExpand, 
    }; 
    grid.Children.Add(zxing); 
    grid.Children.Add(overlay); 

    // The root page of your application 
    Content = grid; 
} 
+0

я вижу, так это выглядит, как мне нужно использовать пользовательские overlay (https://github.com/Redth/ZXing.Net.Mobile/blob/master/readme.md#custom-overlays) – jbyrd

+0

@jbyrd Вы можете использовать 'ZXingDefaultOverlay' по умолчанию, если хотите, если это не соответствует ваш стиль приложения, да, вы можете создать собственный. – SushiHangover

+0

Я все еще немного смущен тем, как это работает, хотя - прямо сейчас, все, что мне нужно сделать, это вызвать две строки, которые вы видите в моем оригинальном посте. При этом мы представляем страницу (обычно ли Scan() открывает страницу?). Если я создаю пользовательскую страницу, то как эти 2 строки вписываются в ... или мне нужно делать что-то совершенно другое? – jbyrd

 Смежные вопросы

  • Нет связанных вопросов^_^