2017-11-12 63 views
0

下記のコードを使用して、XamarinのQRコードをスキャンしています。私は現在、サムスンギャラクシー(アンドロイド)でそれをテストしていると私はカメラストリーミングを表示することができますが、それは任意のQRコードをスキャンしていません。ZXingがAndroid(Xamarinアプリ)でスキャンしていません

QRの結果をスキャンするにはどうすればこの問題を解決できますか?

public void Scan() 
{ 
try 
{ 
scanner.Options = new MobileBarcodeScanningOptions() 
{ 
UseFrontCameraIfAvailable = false, //update later to come from settings 
PossibleFormats = new List(), 
TryHarder = true, 
AutoRotate = false, 
TryInverted = true, 
DelayBetweenContinuousScans = 2000, 
}; 

    scanner.VerticalOptions = LayoutOptions.FillAndExpand; 
    scanner.HorizontalOptions = LayoutOptions.FillAndExpand; 

    // scanner.IsVisible = false; 

    scanner.Options.PossibleFormats.Add(BarcodeFormat.QR_CODE); 
    // scanner.Options.PossibleFormats.Add(BarcodeFormat.DATA_MATRIX); 
    // scanner.Options.PossibleFormats.Add(BarcodeFormat.EAN_13); 


    scanner.OnScanResult += (result) => { 
     // Stop scanning 
     scanner.IsAnalyzing = false; 
     scanner.IsScanning = false; 

     if (scanner.IsScanning) 
     { 
      scanner.AutoFocus(); 
     } 

     // Pop the page and show the result 
     Device.BeginInvokeOnMainThread(async() => { 
      if (result != null) 
      { 
       await DisplayAlert("Scan Value", result.Text, "OK"); 
      } 
     }); 
    }; 

    mainGrid.Children.Add(scanner, 0, 1); 
} 
catch (Exception ex) 
{ 
    DisplayAlert("Scan Value", ex.ToString(), "Error"); 
} 
} 

答えて

0

たぶん、あなたは間違ったイベントハンドラを使用して、またはイベントが欠落している、また、カメラは焦点を当てたことがない:

を条件に、このコードのフラグメントのために、真のことはありません:

scanner.IsScanning = false; 

    if (scanner.IsScanning) 
    { 
     scanner.AutoFocus(); 
    } 
+0

私も以下のコードを試みたが、何もスキャンしなかった:scanner.OnScanResult + =(結果)=> { if(scanner.IsScanning) { scanner.AutoFocus(); } //ページをポップし、その結果 Device.BeginInvokeOnMainThread(非同期()=> { 場合(結果を表示!= null)の { はDisplayAlert( "スキャンバリュー" 待つ、result.Text、 "OK" ); } }); }; –

+0

コード例をオンラインで作業してみたり、実際のプロジェクトをダウンロードしたりして、何が違うのか理解できるようにしてください。 –

+0

実際には、私はすでにやったことだが、私のためには役に立たなかった –

関連する問題