2017-08-27 196 views
0

我想創建一個簡單的自己的QR碼閱讀器。爲此我組合了一些來自互聯網的腳本並使其正常運行。但是「真正的」掃描儀應用程序沒有打開。Xamarin Android ZXing Mobile不開放

這是我使用的代碼:

public class MainActivity : Activity 
    { 
     MobileBarcodeScanner scanner; 
     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      MobileBarcodeScanner.Initialize(Application); 
      ZXing.Net.Mobile.Forms.Android.Platform.Init(); 

      showScanner(); 
     } 

     private void showScanner() 
     { 
      scanner = new MobileBarcodeScanner(); 
      scanner.UseCustomOverlay = false; 
      scanner.TopText = "Hold camera up to barcode to scan"; 
      scanner.BottomText = "Barcode will automatically scan"; 
      scanner.CancelButtonText = "Done"; 
      scanner.FlashButtonText = "Flash"; 

      var opt = new MobileBarcodeScanningOptions { DelayBetweenContinuousScans = 3000 }; 

      scanner.ScanContinuously(opt, HandleScanResult); 
     } 

     private void HandleScanResult(ZXing.Result result) 
     { 
      string msg; 
      if (result != null && !string.IsNullOrEmpty(result.Text)) // Success 
      { 
       msg = result.Text; 
      } 
      else // Canceled 
      { 
       msg = "Scanning Canceled!"; 
      } 
     } 
    } 

從我的理解這應該工作。但事實並非如此。

我還使用在AndroidManifest.xml這些行:

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.FLASHLIGHT" /> 

我在做什麼錯?

回答

0

好的,我已經完成了。

只需複製並粘貼您的項目;)

using Android.App; 
using Android.Widget; 
using Android.OS; 
using Xamarin.Forms; 
using ZXing.Mobile; 
using System; 

namespace QRCodeReader 
{ 
    [Activity(Label = "QRCodeReader", MainLauncher = true, Icon = "@drawable/icon")] 
    public class MainActivity : Activity 
    { 
     MobileBarcodeScanner scanner; 
     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      Forms.Init(this, bundle); 
      MobileBarcodeScanner.Initialize(Application); 

      try 
      { 
       bool Scanning = true; 
       var scanner = new MobileBarcodeScanner(); 
       scanner.UseCustomOverlay = false; 
       scanner.TopText = "Hold camera up to barcode to scan"; 
       scanner.BottomText = "Barcode will automatically scan"; 
       scanner.CancelButtonText = "Done"; 
       scanner.FlashButtonText = "Flash"; 

       Device.StartTimer(TimeSpan.FromSeconds(3),() => 
       { 
        scanner.AutoFocus(); 
        if (Scanning) 
         return true; 
        else 
         return false; 
       }); 

       scanner.Scan().ContinueWith(t => 
       Device.BeginInvokeOnMainThread(() => 
       { 
        Scanning = false; 
        if (t.Result != null) 
        { 
         Toast.MakeText(this, t.Result.Text, ToastLength.Long).Show(); 
        } 
       })); 
      } 
      catch (Exception ex) 
      { 
       Toast.MakeText(this, ex.Message.ToString(), ToastLength.Long).Show(); 
       // Handle exception 
      } 
     } 
    } 
} 

,並用於以下權限:

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.FLASHLIGHT" />