android-lib-ZXingCaptureActivity 2.3.0-1.2 をリリースしました
android-lib-ZXingCaptureActivity という Android アプリ用のライブラリを公開しました *1。 AAR でパッケージングして、Maven Central に publish してあります。
- バージョン 2.3.0-1.2 : info.vividcode.android.zxing:capture-activity:2.3.0-1.2 — Maven Central Repository Search Engine
- 全バージョン : info.vividcode.android.zxing:capture-activity — Maven Central Repository Search Engine
android-lib-ZXingCaptureActivity でできること
このライブラリを使うと、バーコードスキャンの機能を持つ Activity をあなたのアプリに簡単に組み込むことができます。 次のスクリーンショットのような感じです。
バーコードスキャンの機能自体は、ZXing の core モジュールにより実現されます。 (なので、このライブラリは com.google.zxing:core
に依存します。) 本ライブラリが提供するのは、Activity の実装と、カメラの管理などの部分です。 本ライブラリの実装の多くの部分は、ZXing の android モジュールを元に作られています。
ZXing プロジェクトについては次をご覧ください。
備考
バーコードスキャンの機能があなたのアプリのコア機能であるならば、本ライブラリを使うなどして、アプリの中にバーコードスキャンの機能を組み込むべきでしょう。 一方で、バーコードスキャンの機能がコア機能でないのであれば、バーコードスキャンは 「QRコードスキャナー」 などの別のアプリにインテントを投げることで実現する、というのも一つの手段でしょう。 「QRコードスキャナー」 にインテントを投げるのであれば、ZXing プロジェクトの android-integration モジュールを使うのが便利です。
使い方
依存関係の追加
Maven Central に公開されているので、build.gradle に次のように依存関係を追加することでライブラリを使用できます (Gradle によるビルドを行う場合)。
repositories {
mavenCentral()
}
dependencies {
compile 'info.vividcode.android.zxing:capture-activity:2.3.0-1.+'
}
Maven でのビルドや Ant でのビルドを行う場合も、それぞれのやり方で依存関係に追加すれば使えると思います。 (試してません。)
AndroidManifest.xml での activity の宣言
このライブラリが提供する activity は info.vividcode.android.zxing.CaptureActivity
です。 これを使うことを AndroidManifest.xml で宣言します。 (必要ならば、CaptureActivity
のサブクラスを作ってそれを使うようにもできます。)
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.example.your.app.pkg"> <application> <activity android:name="info.vividcode.android.zxing.CaptureActivity" android:theme="@style/Theme.ZXingCaptureActivity" android:screenOrientation="landscape"/>
テーマは自由に指定することができます。 本ライブラリでは、Theme.ZXingCaptureActivity
というテーマを提供しています。 それと、android:screenOrientation
は必ず landscape
と指定してください。
Activity の起動と結果の取得
あとは、実際に Activity を起動して、結果を受け取るだけです。 Activity の起動は、次のように Activity#startActivityForResult
メソッド を使って行います。
// 必要な import 文 import android.content.Intent; import info.vividcode.android.zxing.CaptureActivity; import info.vividcode.android.zxing.CaptureActivityIntents; // Intent の作成。 Intent captureIntent = new Intent(this, CaptureActivity.class); // `CaptureActivityIntents` クラスを使ってインテントにパラメータをセットできます。 // (必須のパラメータはありません。) // 例えば、`setPromptMessage` メソッドを使い、`CaptureActivity` に表示されるメッセージを設定できます。 CaptureActivityIntents.setPromptMessage(captureIntent, "Barcode scanning..."); // Activity の開始。 startActivityForResult(captureIntent, 1);
結果は、Activity#onActivityResult
コールバックメソッド で受け取ります。 結果のデータは CaptureResult
クラスで扱うと良いでしょう。
// 必要な import 文 import android.content.Intent; import android.widget.Toast; import info.vividcode.android.zxing.CaptureResult; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1) { if(resultCode == RESULT_OK) { CaptureResult res = CaptureResult.parseResultIntent(data); // バーコードから読み取った値と、バーコードのフォーマットを Toast で表示する。 Toast.makeText(this, res.getContents() + " (" + res.getFormatName() + ")", Toast.LENGTH_LONG).show(); } else { // 「戻る」 ボタンが押されたときなどはこっちに来る。 } } }