以前、【Android Studio】zxing をプロジェクトとしてインポートし、任意のプロジェクトでライブラリとして使用する! | oki2a24 と息巻いておりましたものの、失敗いたしました><。その後、ZXing Android Embedded を使用することで zxing をプログラミングできるようになりました♪今回は、それまでの過程を記録いたします。
まずは、
の README.md から、ポイント感じた部分をまとめます♪そして、実際に Android Studio に導入してソースを 1 行書くところまで進めますわ♪
ZXing Android Embedded の README.md で感じたポイント
ZXing Android Embedded
ライブラリの特徴が書いてあるようですの。
- バーコードのスキャンはzxing 本家にて Intent を経由すべきと案内されている。
- Intent 経由で使用できない次のような場合では ZXing Android Embedded ライブラリを使うと良い。
- 端末にバーコードスキャナーアプリをインストール出来ない場合
- バーコードスキャンのロジックをカスタマイズする必要がある場合
- UI をカスタマイズする必要がある場合
Adding aar dependency with Gradle
Android Studio にインポートする時の方法、注意点ですわね。
- compile ‘com.journeyapps:zxing-android-embedded:2.3.0@aar’
Android 4.0.3 以降 (API level 15) をサポート - compile ‘com.journeyapps:zxing-android-legacy:2.3.0@aar’
Android 2.1 (API level 7) 以降をサポートするが、以降のバージョンのサポートは最適化されていない。Android 4.0.3 以降のみをサポートする場合は、不要 - compile ‘com.journeyapps:zxing-android-integration:2.3.0@aar’
スキャンアクティビティを起動するのに便利なライブラリ。自動的に最適なスキャンライブラリを上の2つから選択する。選択基準はアンドロイドのバージョンとその中から使用可能なものとなる。 - compile ‘com.google.zxing:core:3.2.0’
zxing core 3.0.x には Android 2.2 とそれ以前のバージョンに互換性がないコードが幾つか存在する。大半はエンコーディングに影響がある。しかしこれらのバージョンをサポートする場合はテストするべきだ。
もしより古い Android バージョンのサポートが必要な場合、2.2 といった古いバージョンでも動作する。
こちらのページも参考になります♪
What’s the difference between zxing-android-embedded and zxing-android-legacy?
ZXing Android Embedded ライブラリと zxing-android-legacy (zxing 本家?) の違いと小見出しにはございます。
けれどもがサポート範囲の違いと、全範囲でサポートするための住み分けについて書かれておりました。
- zxing-android-embedded – 最新のバーコードスキャナーのバージョンに対応
- zxing-android-legacy – Android 2.2 のサポートが最新の ZXing プロジェクト
Adding apklib dependency with Maven
特にありません。(といいますか、よくわかりません><)
Usage
使い方が紹介されておりますが、このライブラリを使ってみた他のページと見比べながら見るのがよさそうですわね。
Custom Layout、Building locally、Sponsored by、License
特にありません。
ZXing Android Embedded を利用して、zxing を使えるようにしてみます!
実際に、SampleZxing というプロジェクトを Android Studio で作成し、zxing が使用できるように試してみます。
ZXing Android Embedded の追加♪
app の方の build.gradle を修正いたします。
まず、次を追加いたしました。場所は、dependencies の上です。
repositories { mavenCentral() maven { url "https://dl.bintray.com/journeyapps/maven" } }
次に、dependencies 内に、次を追加いたします。サポート範囲について ReadMe.md の読み込みで調べましたけれども、今は全部サポート、つまり全部書く形といたします。
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.1.1' // 以下、ZXing Android Embedded 追加のために記述 compile 'com.journeyapps:zxing-android-embedded:2.3.0@aar' compile 'com.journeyapps:zxing-android-legacy:2.3.0@aar' compile 'com.journeyapps:zxing-android-integration:2.3.0@aar' compile 'com.google.zxing:core:3.2.0' }
これで Gradle のビルドをしましたら、無事に終了いたしました。
zxing を Activity で利用!
MainActivity.java の onCreate で zxing を使用できるかどうか、クラスをインスタンス化することで確認いたしました。
結果、次のコードを書くことで、import も自動的になされ、無事に使うことができましたの!
IntentIntegrator intentIntegrator = new IntentIntegrator(this);
本当は、AndroidManifest.xml にカメラの使用許可を書かなければなりません。けれども、今回の目的は zxing をソースで利用できるようにすることですので、あえて書かないことといたします。
おわりに
以前の投稿で挫折しましたけれども、ようやく zxing を使えるようにするところまで辿り着きました♪QR コードを読み込むサンプルはネット上に結構ございますので、きっと試すことが出きると思いますの♪
最後に、ZXing Android Embedded の使い方を調べておりましたら、zxing だけで Android Studio でも使うことができそうなページを見つけました。いまさらですの><。
今更ですけれども、メモしておきますわ♪
以上です。