2017-08-27 14 views
0

シンプルなQRコードリーダーを作成したいと思います。このために私はいくつかのスクリプトをインターネットから組み合わせ、適切に動作させました。しかし、「実際の」スキャナアプリケーションは開かれていません。Xamarin Android ZXingモバイル開けません

私が使用したコード:

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" /> 
関連する問題