2016-08-17 1 views
1

J'essaie d'ajouter la fonction scanner de codes à barres à mon application xamarin.ios. Je développe à partir de Visual Studio et j'ai ajouté le composant Zxing.Net.Mobile du magasin de composants xamarin.Xamarin.iOS ZXing.Net.Mobile scanner de codes à barres

Je l'ai mis en œuvre comme indiqué dans les échantillons:

ScanButton.TouchUpInside += async (sender, e) => { 
      //var options = new ZXing.Mobile.MobileBarcodeScanningOptions(); 
      //options.AutoRotate = false; 
      //options.PossibleFormats = new List<ZXing.BarcodeFormat>() { 
      // ZXing.BarcodeFormat.EAN_8, ZXing.BarcodeFormat.EAN_13 
      //}; 

      var scanner = new ZXing.Mobile.MobileBarcodeScanner(this); 
      //scanner.TopText = "Hold camera up to barcode to scan"; 
      //scanner.BottomText = "Barcode will automatically scan"; 
      //scanner.UseCustomOverlay = false; 
      scanner.FlashButtonText = "Flash"; 
      scanner.CancelButtonText = "Cancel"; 
      scanner.Torch(true); 
      scanner.AutoFocus(); 

      var result = await scanner.Scan(true); 
      HandleScanResult(result); 
     }; 

void HandleScanResult(ZXing.Result result) 
    { 
     if (result != null && !string.IsNullOrEmpty(result.Text)) 
      TextField.Text = result.Text; 
    } 

Le problème est que lorsque je tape sur le bouton de balayage, la vue de la capture est affichée correctement mais si je tente de capturer un rien de codes à barres se produit et il semble que le scanner ne reconnaisse aucun code à barres.

Quelqu'un a rencontré ce problème? Comment puis-je le faire fonctionner?

Merci d'avance pour votre aide!

+0

Avez-vous essayé ici? https://components.xamarin.com/gettingstarted/zxing.net.mobile il y a un exemple de code (je n'ai jamais eu d'expérience avec le scanner de code à barres) – unbalanced

+0

Oui, j'ai suivi cet exemple de code mais cela ne fonctionne pas. J'ai aussi essayé d'exécuter l'échantillon ios à partir du repo github et ça ne marche pas aussi. Ce peut être un problème de mon ipad 2 (je l'utilise pour tester)? – Androidian

+0

pourriez-vous suivre cela? https://blog.xamarin.com/barcode-scanning-made-easy-with-zxing-net-for-xamarin-forms/ – unbalanced

Répondre

1

J'ai répondu à une question similaire here. Je n'ai pas réussi à numériser les codes-barres car la résolution de la caméra par défaut était trop basse. La mise en œuvre spécifique pour ce cas serait:

ScanButton.TouchUpInside += async (sender, e) => { 
     var options = new ZXing.Mobile.MobileBarcodeScanningOptions { 
      CameraResolutionSelector = HandleCameraResolutionSelectorDelegate 
     }; 

     var scanner = new ZXing.Mobile.MobileBarcodeScanner(this); 
     . 
     . 
     . 
     scanner.AutoFocus(); 

     //call scan with options created above 
     var result = await scanner.Scan(options, true); 
     HandleScanResult(result); 
    }; 

Et puis la définition de HandleCameraResolutionSelectorDelegate:

CameraResolution HandleCameraResolutionSelectorDelegate(List<CameraResolution> availableResolutions) 
{ 
    //Don't know if this will ever be null or empty 
    if (availableResolutions == null || availableResolutions.Count < 1) 
     return new CameraResolution() { Width = 800, Height = 600 }; 

    //Debugging revealed that the last element in the list 
    //expresses the highest resolution. This could probably be more thorough. 
    return availableResolutions [availableResolutions.Count - 1]; 
}