まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。
この広告は、90日以上更新していないブログに表示しています。
android-lib-ZXingCaptureActivity というAndroid アプリ用のライブラリを公開しました*1。AAR でパッケージングして、Maven Central に publish してあります。
このライブラリを使うと、バーコードスキャンの機能を持つ 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 でのビルドを行う場合も、それぞれのやり方で依存関係に追加すれば使えると思います。 (試してません。)
このライブラリが提供する activity はinfo.vividcode.android.zxing.CaptureActivity
です。 これを使うことを AndroidManifest.xml で宣言します。 (必要ならば、CaptureActivity
のサブクラスを作ってそれを使うようにもできます。)
<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="org.example.your.app.pkg"><application><activityandroid:name="info.vividcode.android.zxing.CaptureActivity"android:theme="@style/Theme.ZXingCaptureActivity"android:screenOrientation="landscape"/>
テーマは自由に指定することができます。 本ライブラリでは、Theme.ZXingCaptureActivity
というテーマを提供しています。 それと、android:screenOrientation
は必ずlandscape
と指定してください。
あとは、実際に 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;@Overrideprotectedvoid 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 {// 「戻る」 ボタンが押されたときなどはこっちに来る。 } }}
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。