web-dev-qa-db-ja.com

ボタンをクリックしてバーコードスキャナーを呼び出すAndroidアプリケーション

Zxing 1.6をダウンロードし、スタンドアロンのバーコードスキャナーを正常に実行できました。このスキャナーは別のプロジェクトにあり(CaptureActivity)、MyProjというアプリの別のプロジェクトがあります。プロジェクトのボタンをクリックするだけで別のプロジェクトのCaptureActivityを呼び出します。プロジェクト全体を自分のプロジェクトにインポートするにはどうすればよいですか?プロジェクトまたは私はこれを機能させるために何をしますか。よろしくお願いします

11
user662237

バーコードスキャナーを「コピー」してアプリに含めると、プロジェクトが過負荷になる可能性があると思います。スキャナーのインテントを使用する必要があります。

ここから: http://code.google.com/p/zxing/wiki/ScanningViaIntent

バーコードスキャナーがAndroidデバイスにインストールされている場合は、インテントを送信するだけで、スキャンして結果を返すことができます。たとえば、スキャンするボタンを接続できます。このようなQRコード:

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.Android.SCAN");
        intent.setPackage("com.google.zxing.client.Android");
        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
        }
    }
}

製品のバーコードをスキャンしたり、バーコードスキャナーにバーコードをエンコードして表示するように依頼したりするなど、その他のオプションについては、次のソースファイルを参照してください。

http://code.google.com/p/zxing/source/browse/trunk/Android/src/com/google/zxing/client/Android/Intents.Java

そして、それらの使用方法を示すテストアプリからのいくつかのソースがあります:

http://code.google.com/p/zxing/source/browse/trunk/androidtest/src/com/google/zxing/client/androidtest/ZXingTestActivity.Java

IntentIntegrator

また、上記の詳細の一部をカプセル化したクラスの小さなライブラリの作成も開始しました。統合するためのおそらくより簡単な方法については、IntentIntegratorを参照してください。特に、これはバーコードスキャナーがまだインストールされていない場合を処理します。

http://code.google.com/p/zxing/source/browse/trunk/Android-integration/src/com/google/zxing/integration/Android/IntentIntegrator.Java

URL経由バーコードスキャナーv2.6以降、ブラウザーのURLからアプリを起動することもできます。 http://zxing.appspot.com/scan へのハイパーリンクを作成するだけで、BarcodeScannerはそれを処理するために起動することを提案します。ユーザーは、常にバーコードスキャナーを自動的に開くように選択することもできます。

注:このURLは、ブラウザーで実際のWebページを提供するためのものではなく、ネイティブアプリを起動するための単なるフックです。

既知の問題ユーザーjamesikanosは、次の「落とし穴」を報告しています。

LaunchMode「singleInstance」を使用してTabHostアクティビティを作成する「スキャンの開始」ボタンを使用して子アクティビティを作成する(このボタンからIntentIntegratorを使用してzxingを起動する)子アクティビティのonActivityResultは、「キャンセルされた」onActivityResultが後で呼び出されることはないため、すぐに返されます。

36
Waza_Be