web-dev-qa-db-ja.com

BarCode ScannerをインストールせずにZXing QRコードスキャナーを統合

BarCode ScannerアプリをインストールせずにZXing QRコードをAndroidアプリに統合しようとしています。

1)まず、ZXing.Zipファイルをダウンロードして解凍しました

2)ZXingプロジェクトをAndroid既存のプロジェクトとして開き、Androidフォルダーに移動して、Androidフォルダーとまた、core.jarファイルをCaptureActivityという名前のZXingプロジェクトに含めます。

3)CaptureActivityプロジェクトを「QRCodeSample」というプロジェクトのライブラリとして使用しました。 (ライブラリとしてCaptureActivityを含めることの問題)

4)私のコードは以下の通りです3:

   public class QRCodeSampleActivity extends Activity {
Button b1;
static String contents;

public static final int REQUEST_CODE = 1;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    b1 = (Button) findViewById(R.id.button1);
    b1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            /*Intent intent = new Intent("com.google.zxing.client.Android.SCAN");
            intent.putExtra("com.google.zxing.client.Android.SCAN.SCAN_MODE",
                    "QR_CODE_MODE");
            startActivityForResult(intent, 0);*/
            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) {
            contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            Log.i("Barcode Result", contents);
            Intent i1 = new Intent(QRCodeSampleActivity.this, webclass.class);
            startActivity(i1);
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
            Log.i("Barcode Result","Result canceled");
        }
    }
}

 }

マニフェストファイルは次のとおりです。

<uses-permission Android:name="Android.permission.CAMERA"/>

<application
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name" >

     <activity Android:name="com.google.zxing.client.Android.CaptureActivity"
           Android:screenOrientation="landscape"
           Android:configChanges="orientation|keyboardHidden"
           Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen"
           Android:windowSoftInputMode="stateAlwaysHidden">
           <intent-filter>
              <action Android:name="Android.intent.action.MAIN"/>
              <category Android:name="Android.intent.category.DEFAULT"/>
           </intent-filter>
           <intent-filter>
              <action Android:name="com.google.zxing.client.Android.SCAN"/>
              <category Android:name="Android.intent.category.DEFAULT"/>
            </intent-filter>


    </activity>
    <activity
        Android:label="@string/app_name"
        Android:name=".QRCodeSampleActivity" >
       <intent-filter >
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>


    <activity  Android:name=".webclass"></activity>

</application>

</manifest>

また、ライブラリを追加しません

LibraryInformation

プロジェクトを実行しようとすると、エラーメッセージは次のようになります。

アクティビティComponentInfo {com.qr.code/com.qr.code}をインスタンス化できません:Java.lang.ClassNotFoundException:ローダー内のcom.qr.code dalvik.system.PathClassLoader [/data/app/com.qr.code-1 .apk]

25
Kanika

最終的に私は答えを得ました、

ADT 14以降、リソースプロジェクト(R.id.decodeなど)は、ライブラリプロジェクトで定義されたときに定数ではなくなりました

ZXingライブラリで-> Android-> com.google.zxing.client.Android.CaptureActivityHandler.JavaおよびDecodeHandler.Java

これらのクラスswitch caseステートメントの両方をif-elseに置き換えてから、このZXingライブラリをプロジェクトにインポートします。

私自身のプロジェクトの残りのコーディングは同じです... ADT 14に従ってライブラリクラスが更新されないため、ライブラリクラスの問題だけです。

カニカ

23
Kanika

すべてのAndroid Studio/Gradleユーザーの場合

わかりました、今日の私の仕事はAndroidアプリケーションにZXINGを統合することであり、入力用の良いソースがなかったので、成功した理由を教えます-原因非常に簡単であることが判明しました(バージョン2. *)。

Zxing AndroidライブラリプロジェクトをAARアーカイブとして提供する、本当に便利なgitリポジトリがあります。

これをbuild.gradleに追加するだけです

repositories {
    mavenCentral()

    maven {
        url "https://raw.github.com/embarkmobile/zxing-Android-minimal/mvn-repo/maven-repository/"
    }
}

dependencies {
    compile 'com.google.zxing:core:2.2'
    compile 'com.embarkmobile:zxing-Android-minimal:1.2.1@aar'
}

gradleはコードをコンパイルするためのすべての魔法を実行し、アプリでアクセスできるようにします。

スキャナーを後で起動するには、次のクラス/メソッドを使用します。

IntentIntegrator.initiateScan(this);    // `this` is the current Activity

既にリンクにアクセスしている場合は、git readmeからコードをコピーして貼り付けただけです。そこに行かないと、さらなる洞察とコード例が得られます!

将来の読者に役立つことを願っています。平和:)

17

リンクで指定された手順に従う必要があります

http://www.androidaz.com/development/zxing-qr-reader-direct-integration

core.jarはからダウンロードできます

http://repo1.maven.org/maven2/com/google/zxing/core/2.2/

あなたのプログラムがまだlibsにcore-2.2.jarを置いてプロジェクトをきれいにするだけなら、上記は私のために働いています

4
Piyush

私は同じ問題を抱えていましたが、何時間も苦労してこのように解決しました。ルビライが指しているように

*プロジェクトを右クリック>プロパティ> Android>(タブライブラリの下)Zxingプロジェクトを追加*

ここで説明されているように、Zxingプロジェクトをライブラリとして正しく作成できたと仮定します。 http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your- Android-app-natively-using-Eclipse /

3
Pej

MaterialBarcodeScanner:Android Project(Google Mobile Vision APIを使用))で使いやすいバーコードリーダー。

  1. Gradle依存関係を提供する

    'com.edwardvanraak:MaterialBarcodeScanner:0.0.6-ALPHA'をコンパイルします

  2. MaterialBarcodeScannerを構築する

    private void startScan() {
        /**
         * Build a new MaterialBarcodeScanner
         */
        final MaterialBarcodeScanner mBarcodeScanner 
                 = new MaterialBarcodeScannerBuilder()
                .withActivity(MainActivity.this)
                .withEnableAutoFocus(true)
                .withBleepEnabled(true)
                .withBackfacingCamera()
                .withText("Scanning...")
                .withResultListener(new MaterialBarcodeScanner.OnResultListener() {
                    @Override
                    public void onResult(Barcode barcode) {
                        barcodeResult = barcode;
                        result.setText(barcode.rawValue);
                    }
                })
                .build();
        mBarcodeScanner.startScan();
    }
    
  3. ボタンに接続する

    fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
     startScan();
    }
    });
    
  4. スキャンを開始してください!

2

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に変更します。次に、「Android」をクリックして、「プロジェクトビルドターゲット」をAndroid 4.4.2+に変更します。1.7を使用するにはAndroid 4.4
  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」をクリックし、「ライブラリ」をクリックしてプロジェクトに使用できます
1
Anh Duy
  1. Zxingを既存のプロジェクトとしてインポートした後、[プロパティ]> Java Buildpath> [is library](チェックボタン)をチェックしてから、Zxingをライブラリとして追加します。

  2. webclass.classQRcodesampleActivity.Javaが存在することを確認してください

0
Rubiraj