バーコードスキャナーをインストールせずにZxing QRコードスキャナーを統合します

StackOverflow https://stackoverflow.com/questions/8340875

質問

Zxing QRコードをBarcode ScannerアプリをインストールせずにAndroidアプリに統合しようとしています。次の手順に従いました。

1)最初にzxing.zipファイルをダウンロードして抽出しました

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

3)私は、「QRCodesample」という名前のプロジェクトのライブラリとしてCaptureactivity Projectを使用しました。 (ライブラリとして捕獲対象を含める問題)

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

プロジェクトを実行しようとしているとき、エラーMSGは次のとおりです。

アクティビティComponentInfoをインスタンス化することができません{com.qr.code/com.qr.code}:java.lang.classnotfoundexception:com.qr.code in loader dalvik.system.pathclassoloader [/data/app/com.qr.qr.code-1 .apk

役に立ちましたか?

解決

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

ADT 14の時点で、ライブラリプロジェクトで定義されている場合、リソースフィールド(r.id.decodeなど)は定数ではなくなりました

したがって、Zxingライブラリ - > android-> com.google.zxing.client.android.captureativityhandler.javaおよびdecodehandler.javaで

これらの両方のクラスを交換して、ケースステートメントをif-elseに切り替えてから、このzxingライブラリをプロジェクトにインポートします。

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

カニカ

他のヒント

そこにあるすべてのAndroid Studio/Gradleユーザーのために

さて、今日の私の仕事はZxingをAndroidアプリケーションに統合することであり、入力の良い情報源はありませんでした。 それが非常に簡単であることが判明したからです (バージョン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をコピーしてコピーして貼り付けたことがわかります。そうでない場合は、さらに洞察とコードの例を取得するためにそこに行ってください!

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

リンクで与えられたようにステップに従う必要があります

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

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

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

上記は私のために働いています、あなたのプログラムがまだCore-2.2.JarをLibsに入れてあなたのプロジェクトをクリーンにした場合、私のために働いています

私は同じ問題を抱えていました、そして、それに苦労してから、私はついにこのようにそれを解決することができました。ルビラジが指しているように

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

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

MaterialBarcodescanner:Androidプロジェクトに使いやすいバーコードリーダー(Google Mobile Vision APIを使用)。

  1. Gradle依存関係を提供します

    compile '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. スキャンを開始します!

EclipseでZxing 3.2.1をセットアップするためのステップバイステップ

  1. zxing-master.zipをダウンロードしてください」https://github.com/zxing/zxing"
  2. zxing-master.zipを解凍し、eclipseを使用してzxing-masterで「android」プロジェクトをインポートします
  3. core-3.2.1.jarをダウンロードしてください」http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
  4. 「Android」プロジェクトに「libs」フォルダーを作成し、cor-3.2.1.jarをlibsフォルダーに貼り付けます
  5. プロジェクトをクリックします:「プロパティ」 - >「Javaコンパイラ」を選択して、レベルを1.7に変更します。次に、1.7を使用するにはAndroid 4.4とコンパイルが必要なため、「Android」「Android」Change "Project" Build "ターゲットをBuild" "を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. プロジェクトを清掃して構築します。プロジェクトが「スイッチ - ケース」に関するエラーを示している場合、それらを「if -else」に変更する必要があります。
  8. 完了しました。プロジェクトを清掃して構築します。 [Proprties]>「Android」をクリックして、[ライブラリ]をクリックしてプロジェクトに使用できます。
  1. Zxingを既存のプロジェクトとしてインポートした後、プロパティ> Java BuildPath>チェック「ISライブラリ」(チェックボタン)を確認し、ZXINGをライブラリとして追加してみてください。

  2. 確実に webclass.class あなたの中に存在します QRcodesampleActivity.java

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top