アプリにバーコードスキャナーを追加する方法を探していました。例はありますか、またはこれを簡単に行うにはどうすればよいですか?
7 に答える
ZXingプロジェクトは、Androidのインテントメカニズムを介して、バーコードスキャンを統合したい他のアプリケーションから呼び出すことができるスタンドアロンのバーコードリーダーアプリケーションを提供します。
これを行う最も簡単な方法は、次のようSCAN
Intent
に、アプリケーションからZXingを呼び出すことです。
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でzxing3.2.1をセットアップするためのステップバイステップ
- 「 https://github.com/zxing/zxing」からzxing-master.zipをダウンロードします
- zxing-master.zipを解凍し、Eclipseを使用してzxing-masterに「android」プロジェクトをインポートします
- 「 http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/」からcore-3.2.1.jarをダウンロードします。
- 「android」プロジェクトに「libs」フォルダーを作成し、cor-3.2.1.jarをlibsフォルダーに貼り付けます
- プロジェクトをクリックします。「プロパティ」->「Javaコンパイラ」を選択して、レベルを1.7に変更します。次に、[Android]をクリックして[プロジェクトビルドターゲット]をandroid 4.4.2 +に変更します。これは、1.7を使用するにはAndroid4.4でコンパイルする必要があるためです。
- 「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 /」からコピーして、プロジェクトに貼り付けることができます。
- プロジェクトをクリーンアップしてビルドします。プロジェクトで「switch--case」に関するエラーが表示された場合は、「if--else」に変更する必要があります。
- 完了しました。プロジェクトをクリーンアップしてビルドします。[プロパティ]>[Android]をクリックし、[ライブラリ]をクリックしてプロジェクトに使用できます。
intent.putExtraの名前にパッケージ名を含める必要があることを説明するWebサイトを見つけるまで(今は再び見つけることができません)、コードの実装に問題がありました。
アプリケーションをプルアップしますが、バーコードを認識せず、から変更したときに認識されません。
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
に
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
それはうまくいきました。他の初心者のAndroidプログラマーのためのヒントです。
提供されている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
コードに含め、ZXingライブラリが推奨するIntentIntegratorを使用しない場合は、次のポートのいくつかを使用できます。
私は最初のものを使用します、そしてそれは完璧に動作します!試してみるサンプルプロジェクトがあります。
このようにZxingを使用するには、ユーザーがバーコードスキャナーアプリもインストールする必要がありますが、これは理想的ではありません。おそらく必要なのは、Zxingをアプリに直接バンドルすることです。
このライブラリを使用することを強くお勧めします:https ://github.com/dm77/barcodescanner
XzingまたはZbarを直接統合しようとすると、発生するすべてのクレイジーなビルドの問題が発生します。これらのライブラリは内部で使用されますが、非常に使いやすいAPIでラップされています。
バーコード検出がGooglePlayサービスで利用できるようになりました。 セットアッププロセスのコードラボ。ここにAPIドキュメントとサンプルプロジェクトがあります。
このクイックスタートガイドhttp://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/と簡単なサンプルプロジェクトを使用して、IntentIntegratorなしでAndroidアプリをビルドできます。