web-dev-qa-db-ja.com

ZXingを使用してAndroidバーコードスキャンアプリを作成する

アプリにバーコードスキャナーを追加する方法を探しています。例はありますか、これを簡単に行うにはどうすればよいですか?

164
wajiw

ZXingプロジェクトは、Androidのインテントメカニズムを介して、バーコードスキャンを統合したい他のアプリケーションから呼び出すことができるスタンドアロンのバーコードリーダーアプリケーションを提供します。

これを行う最も簡単な方法は、アプリケーションからZXing SCANIntentを呼び出すことです like this

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.Android.SCAN");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    }
};

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}

mScanにリンクされたボタンを押すと、ZXingバーコードスキャナー画面が直接起動します(または、ZXingがインストールされていない場合はクラッシュします)。バーコードが認識されると、Activity、ここではcontents変数で結果を受け取ります。

クラッシュを回避し、物事を単純化するために、ZXingには ユーティリティクラスを提供 があります。これをユーザーにAndroidにリダイレクトすることで、アプリケーションに統合してZXingのインストールをスムーズにできます。 _まだインストールされていない場合は販売します。

最後に、別個のZXingアプリケーションをインストールせずに、バーコードスキャンをアプリケーションに直接統合したい場合、それはオープンソースプロジェクトであり、そうすることができます! :)


編集:誰かがこのガイドをこの答えに編集しました(少し奇妙に聞こえますが、その正確性を保証することはできません。 2015年にEclipseを使用している理由):

Eclipseでzxing 3.2.1を設定するための手順

  1. https://github.com/zxing/zxing 」からzxing-master.Zipをダウンロードします
  2. Zxing-master.Zipを解凍し、Eclipseを使用して「Android」プロジェクトをzxing-masterにインポートします
  3. http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/ 」からcore-3.2.1.jarをダウンロードします
  4. 「Android」プロジェクトに「libs」フォルダーを作成し、cor-3.2.1.jarをlibsフォルダーに貼り付けます
  5. プロジェクトをクリックします。「プロパティ」->「Javaコンパイラ」を選択して、レベルを1.7に変更します。 1.7を使用するにはAndroid 4.4でコンパイルする必要があるため、[Android]をクリックして[Project build target]をAndroid 4.4.2+に変更します。
  6. 「CameraConfigurationUtils.Java」が「zxing-master/Android/app/src/main/Java/com/google/zxing/client/Android/camera /」に存在しない場合。 「zxing-master/Android-core/src/main/Java/com/google/zxing/client/Android/camera /」からコピーして、プロジェクトに貼り付けることができます。
  7. プロジェクトを整理してビルドします。プロジェクトで「switch-case」に関するエラーが表示される場合は、「if-else」に変更する必要があります。
  8. 完了しました。プロジェクトを整理してビルドします。 [プロパティ]> [Android]をクリックし、[ライブラリー]をクリックしてプロジェクトに使用します。
208
Christopher Orr

Intent.putExtraの名前にパッケージ名を含める必要があることを説明するWebサイトが見つかるまで、コードの実装に問題がありました(今はもう見つかりません)。

それはアプリケーションをプルアップしますが、バーコードを認識せず、いつからそれを変更しました。

intent.putExtra("SCAN_MODE", "QR_CODE_MODE");

intent.putExtra("com.google.zxing.client.Android.SCAN.SCAN_MODE", "QR_CODE_MODE");

うまくいきました。他の初心者Androidプログラマ向けのヒントです。

41
user496827

提供されているIntentInegratorを使用することをお勧めします。バーコードスキャナーがない場合は、インストールするようユーザーに促すことができます。また、メッセージをカスタマイズすることもできます。 IntentIntegrator.REQUEST_CODE定数は、上記のifブロックで確認するonActivityResultのリクエストコードの値を保持します。

IntentIntegrator intentIntegrator = new IntentIntegrator(this); // where this is activity 
intentIntegrator.initiateScan(IntentIntegrator.ALL_CODE_TYPES); // or QR_CODE_TYPES if you need to scan QR

IntentIntegrator.Java

23
Yack

ZXingライブラリが推奨するIntentIntegratorを使用せずにコードに含める場合は、次のポートのいくつかを使用できます。

私は最初のものを使用し、それは完全に動作します!試用するサンプルプロジェクトがあります。

11
Aracem

この方法でZxingを使用するには、ユーザーがバーコードスキャナーアプリもインストールする必要がありますが、これは理想的ではありません。おそらく必要なのは、Zxingをアプリに直接バンドルすることです。

このライブラリの使用を強くお勧めします: https://github.com/dm77/barcodescanner

XzingまたはZbarを直接統合しようとすると、これから発生するすべてのクレイジーなビルドの問題が発生します。これらのライブラリは隠れて使用されますが、非常にシンプルなAPIでラップされています。

10

バーコード検出が Google Play開発者サービス で利用可能になりました。 コードラボ セットアッププロセスの場合、ここに api docs 、および サンプルプロジェクト があります。

5
Jim Baca

このクイックスタートガイドを使用できます http://shyyko.wordpress.com/2013/07/30/zxing-with-Android-quick-start/ Android IntentIntegratorのないアプリ。

3
shyyko.serhiy