手持ちの書籍のバーコード情報を取得したいと思って、ライブラリを探してみました。
前々からZXingというライブラリが存在することは知っていたのですが、Eclipse時代からプロジェクト内に取り込むやり方が主流だったので、他のがないかなと思ってました。
しかし、最近調べたところ有志の方が本家からポーティングしてGradleで組み込めるようにライブラリを公開してくださっているようです。
今回はこちらを調べた結果をまとめて公開したいと思います。
ちなみに、調べたと言っても現状は動かしてバーコードを取り、ISBN番号を取得するというところまで実現したのみです。
ZXingに関する詳細については、公式サイトを参照していただくのが一番だと思います。
ちなみに、今回もサンプルアプリをGitHubに公開してありますので、そちらも参考にして見てください。
ZXingライブラリの設定方法
まずはライブラリをプロジェクトに読み込む必要があります。
以下のようにapp/build.gradleに記述することで、ライブラリを組み込めます。
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.jakewharton:butterknife:7.0.1' compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar' compile 'com.google.zxing:core:3.2.1' }
公式サイトには、以下のようにbuildToolsVersionを”23.0.2″以上にするようにとありますが、最近新規に作るプロジェクトでしたら大丈夫でしょう。
android { buildToolsVersion '23.0.2' // Older versions may give compile errors }
バーコード読み込み
バーコードの読み込みには、以下の1行を記述するだけでした。
@OnClick(R.id.barcodeScanButton) public void onBarcodeScanClick() { new IntentIntegrator(this).initiateScan(); }
initiateScanメソッドでバーコード読み込み用のActivityを呼び出しています。
実行結果はActivity#onActivityResultメソッドに返却されるので、以下のようにすることで受け取れます。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if (intentResult != null) { String content = intentResult.getContents(); Toast.makeText(this, content, Toast.LENGTH_SHORT).show(); } }
5行目のIntentIntegrator#parseActivityResultメソッドでバーコードの読み込み結果情報IntentResultを取得できるので、その情報からgetContentsメソッド(8行目)でISBN番号が取得可能です。
これだけでISBNが取れると嬉しいですね。(サンプルなので、取得したデータが空だった時の処理などは書いてないです)
後は、受け取ったISBNを元に書籍情報を取るWebAPIを叩いたりすると、面白そうです。
想像以上にシンプルだったZXingライブラリ。
私が使ったのはまだまだ入り口部分でしかないと思いますが、参考になれば幸いです。
「バーコードを読み込むZXingライブラリを試しました」への2件のフィードバック