AndroidでZXIngを利用してバーコードを読み取る

今回はAndroidからZXingを利用したいと思います。

何かとライフサイクルが面倒なスマートフォンですが、

ZXing Android Embeddedを活用していきたいと思います。

 

ZXing Android Embeddedの特徴

  • Intentから使用することが出来る
  • UIとロジックのカスタマイズの為に、アクティビティに埋め込むことが出来る
  • 縦及び横からスキャンをする事が出来る
  • カメラバックグラウンドで処理され、時間が短縮される

githubに書いてある通り実装していきたいと思います。

事前準備1(build.gradle)

ZXing Android Embeddedを読み込みます

dependencies {
compile 'com.journeyapps:zxing-android-embedded:3.6.0'
}

事前準備2(AndroidManifest.xml)

ハードウェアアクセラレーションとカメラを有効にしてあげます。

android:hardwareAccelerated="true"
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>

カメラ起動

integrator.initiateScan()をしてあげることでカメラが起動します。

それまでのsetはオプションと思って頂ければです。

IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
integrator.setPrompt("Scan a barcode");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setBeepEnabled(false);
integrator.setBarcodeImageEnabled(true);
integrator.initiateScan();

結果取得

カメラが起動してスキャンが完了した時の動作です。

onActivityResultをoverrideしてあげることで結果を求めることが出来ます。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Scanned: " + result.getContents(),Toast.LENGTH_LONG).show();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}

 

動作結果

読み込みが完了すればActivityに戻って、Toastで結果が表示されるかと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です