バーコードスキャナーをインストールせずにZxing QRコードスキャナーを統合します
-
26-10-2019 - |
質問
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>
また、ライブラリも追加していません
プロジェクトを実行しようとしているとき、エラー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を使用)。
Gradle依存関係を提供します
compile 'com.edwardvanraak:Materialbarcodescanner:0.0.6-alpha'
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(); }
ボタンに接続します
fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startScan(); } });
スキャンを開始します!
EclipseでZxing 3.2.1をセットアップするためのステップバイステップ
- zxing-master.zipをダウンロードしてください」https://github.com/zxing/zxing"
- zxing-master.zipを解凍し、eclipseを使用してzxing-masterで「android」プロジェクトをインポートします
- core-3.2.1.jarをダウンロードしてください」http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
- 「Android」プロジェクトに「libs」フォルダーを作成し、cor-3.2.1.jarをlibsフォルダーに貼り付けます
- プロジェクトをクリックします:「プロパティ」 - >「Javaコンパイラ」を選択して、レベルを1.7に変更します。次に、1.7を使用するにはAndroid 4.4とコンパイルが必要なため、「Android」「Android」Change "Project" Build "ターゲットをBuild" "をAndroid 4.4.2+にクリックします。
- 「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/」からコピーして、プロジェクトに貼り付けることができます。
- プロジェクトを清掃して構築します。プロジェクトが「スイッチ - ケース」に関するエラーを示している場合、それらを「if -else」に変更する必要があります。
- 完了しました。プロジェクトを清掃して構築します。 [Proprties]>「Android」をクリックして、[ライブラリ]をクリックしてプロジェクトに使用できます。
Zxingを既存のプロジェクトとしてインポートした後、プロパティ> Java BuildPath>チェック「ISライブラリ」(チェックボタン)を確認し、ZXINGをライブラリとして追加してみてください。
確実に
webclass.class
あなたの中に存在しますQRcodesampleActivity.java