ザマリンリン

xamarin初心者のブログでーす。

ZXingでバーコードスキャンを試してみる。(iOS)

nugetにいろいろ便利なライブラリが揃ってるので、それらも使いこなして楽したいですよね。

田淵さんが幾つか紹介されているので、その中から一つ試してみました。

qiita.com

 

まず、PCLのプロジェクトでzxingをインストール。

f:id:kakikueba:20170115211013p:plain

 

iOSプロジェクトでも同じくzxingをインストール。

とりあえず、この時点でのソリューション状態。

f:id:kakikueba:20170116023224p:plain

 

PCLプロジェクトのApp.xaml.csを修正。

ここ気づかずに半日ハマっておりました(泣

        public App()
        {
            InitializeComponent();

            //MainPage = new testZXingPage();
            MainPage = new NavigationPage(new testZXingPage());
        }

 

testZXingPage.xamlに以下追加

<StackLayout Padding="10">

  <Button Text="Scan" Clicked="ScanButtonClicked" />
</StackLayout>

 

testZXingPage.xaml.csに以下追加

        async void ScanButtonClicked(object sender, EventArgs s)
        {
            var scanPage = new ZXingScannerPage()
            {
                DefaultOverlayTopText = "バーコードを読み取ります",
                DefaultOverlayBottomText = "",
            };

            // スキャナページを表示
            await Navigation.PushAsync(scanPage);

            scanPage.OnScanResult += (result) =>
            {
                // スキャン停止
                scanPage.IsScanning = false;

                // PopAsyncで元のページに戻り、結果をダイアログで表示
                Device.BeginInvokeOnMainThread(async () =>
                {
                    await Navigation.PopAsync();
                    await DisplayAlert("スキャン完了", result.Text, "OK");
                });

                //scanedData.Add(result.Text);
            };
        }

 

 iOSプロジェクト

AppDelegate.csに以下追加

global::ZXing.Net.Mobile.Forms.iOS.Platform.Init();

 info.plistに以下追加(追加しないと実行時にスコンと落ちます)

<key>NSCameraUsageDescription</key>
<string>カメラを利用してスキャンします。</string>

info.plistを選びメニューで「プログラムから開く>Xcode.app」を選択すれば追加可能ですよ。

 

以上で完了!

 

 

※プロファイルの事はよくわからんですけど、特に何もすることなくうまくいきました。

 プロファイル259となってます。

f:id:kakikueba:20170116031406p:plain