web-dev-qa-db-ja.com

Xamarinがバーコードスキャナーを形成

Xamarinフォームバーコードスキャナーの実用的なソースが見つかりませんでした。 zxingライブラリを使用したXamarinフォームバーコードスキャナーの動作サンプルはありますか?

11
Aneesh.A.M

以下のコードを試すことができます。 ソリューション内のすべてのプロジェクトにzxingライブラリ/コンポーネントを追加します

public class Home : ContentPage
{
    string message = "";
    public Home()
    {
        //Intialize the button
        Button btnScan = new Button
        {
            Text = "Start Scan",
            BackgroundColor = Color.FromRgb(207, 197, 159),
            TextColor = Color.White,
            BorderRadius = 5,
            TranslationY = 120
        };
        //Attach the click event
        btnScan.Clicked += btnScan_Clicked;

        this.Content = new StackLayout
        {
            BackgroundColor = Color.FromRgb(150, 172, 135),
            Spacing = 10,
            Padding = 25,
            Children =
            {
                btnScan
            }
        };
    }

    async void btnScan_Clicked(object sender, EventArgs e)
    {
        var scanner = new MobileBarcodeScanner();
        scanner.TopText = "Hold the camera up to the barcode\nAbout 6 inches away";
        scanner.BottomText = "Wait for the barcode to automatically scan!";

        //This will start scanning
        ZXing.Result result = await scanner.Scan();

        //Show the result returned.
        HandleResult(result);
    }

    void HandleResult(ZXing.Result result)
    {
        var msg = "No Barcode!";
        if (result != null)
        {
            msg = "Barcode: " + result.Text + " (" + result.BarcodeFormat + ")";
        }

        DisplayAlert("", msg, "Ok");
    }
}
14
Akash Amin

ZXing.Net.Mobile.Forms を使用できます。しかし、あなたは注意します。

  1. ZXing.Net.Mobile.Formsの現在のバージョンは2.4.1です。このバージョンを使用しましたが、Xamarin.Forms.Androidプロジェクトでビルドに失敗しました。 =>クラッシュアプ​​リ

    =>バージョン2.3.2を使用しました。それはうまく機能しています。

  2. AndroidプロジェクトファイルMainActivity.csに、次のコードを追加します。

    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
    {
        global::ZXing.Net.Mobile.Forms.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }
    

    ここ のチュートリアルコードが正しくないようです

  3. スキャナーを呼び出す:

    private async void BtnScan_OnClicked(object sender, EventArgs e)
    {
        ZXingScannerPage scanPage = new ZXingScannerPage();
        scanPage.OnScanResult += (result) =>
        {
            scanPage.IsScanning = false;
            Device.BeginInvokeOnMainThread(() =>
            {
                Navigation.PopAsync();
                EtInputCode.Text = "Code: " + result.Text;
            });
        };
        await Navigation.PushAsync(scanPage);
    }
    

それはかなり簡単です、

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

if(result == null) 
   return;

results.Text = result.Text;

これは、XZingライブラリを使用してバーとQRコードをスキャンするXamarinFormsの作業サンプルです。

サンプルコード: https://github.com/hnabbasi/CheckInator

デモ: https://www.youtube.com/watch?v=OdPinaBLbvE

1
hnabbasi

ZXing.Net.Mobilenugetを使用できます。ライブラリは、次のURLのgithubで入手できます https://github.com/Redth/ZXing.Net.Mobile 。最初のページに使用法のドキュメントがあります。しかし、私はそれを次のように3つのステップで簡単に説明します:

  1. プロジェクトにNugetを追加します

  2. ContentPageを作成します。 xaml側で、ボタンまたは画像ボタンを作成します。次の例では、次のような画像ボタンのように使用しています。

    _<ImageButton  x:Name="ScanButton"  Source="scannimage.png"  />
    _
  3. コードバインドで、コンストラクターまたはOnAppearing()メソッドに次のコードを配置します。

    _ScanButton.Clicked += async (sender, e) =>
    {
        var scanner = new ZXing.Mobile.MobileBarcodeScanner();
        var result = await scanner.Scan();
    
        if (result != null)
        {
            await DisplayAlert("Code barre", "Scanned Barcode: " + result.Text, "Ok");
        }
    };
    _
1
Masta