2011-04-09 9 views
11

私はzxing 1.6をダウンロードし、それを使ってスタンドアロンバーコードスキャナを正常に実行することができました。今このスキャナは別のプロジェクト(CaptureActivity)にあり、私はMyProjと呼ばれる私のアプリケーションの別のプロジェクトを持っています。私は 私のプロジェクトのボタンをクリックして他のプロジェクトのCaptureActivityを呼び出します。私のプロジェクト、あるいは私は何をすればこれがうまくいくのですか? 事前にお礼しますボタンでバーコードスキャナを呼び出すアンドロイドアプリケーションでクリック

+1

「バーコードスキャン」と呼ぶことができる一般的なmemeのようなタイプですか?このインテントはzxingアプリを明示的に指定します。 – masi

+0

'com.google.zxing.client.android.SCAN'はスキャンのための一般的な' Intent'です。 ZXingはAndroid 1.0よりも前から存在していたので、デファクトスタンダードです。 Barcode Scannerを選択するだけではありません。 –

答えて

33

バーコードスキャナを「コピー」してアプリに含めると、プロジェクトがオーバーロードされている可能性があります。あなたは確かにスキャナからテントを使用する必要があります。

ここから: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を簡単に統合する方法については、IntentIntegratorを参照してください。特に、Barcode Scannerがまだインストールされていない場合に対応します。 URL 経由

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

バーコードスキャナのV2.6のとして、あなたはまた、ブラウザでURLからアプリを起動することができます。簡単にhttp://zxing.appspot.com/scanへのハイパーリンクを作成し、Barcode Scannerがそれを処理するための起動を提供します。バーコードスキャナを常に自動的に開くようにすることもできます。

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

既知の問題 ユーザーjamesikanosは、以下の「ガッチャ」を報告します。

は(このボタンからIntentIntegratorを使用してzxing起動「スタートスキャン」ボタンで子アクティビティを作成します launchModeと「singleInstance」をTabHostアクティビティを作成します。 ) あなたの子アクティビティのonActivityResultはすぐに「キャンセル」されます。 onActivityResultがその後に呼び出されることはありません

+0

パッケージを設定せずにインテントを開始すると、インストールされているデフォルトのqrコードリーダー(私の場合はqr druid)または複数の場合はappchooserダイアログが表示されます – Radon8472

関連する問題