私がやったすべてのステップの説明を始め、最終的には何が問題なのかを説明します。
現時点では ZXingライブラリを直接Androidアプリケーションに統合する
しかし、「ビルドファイル:core\build.xmlが存在しません!ビルドに失敗しました。OK。6. ZXingのインポート-core/build.xmlが見つかりません
はい、core.jarがあります。
プロジェクトを開く->ビルド->プロジェクトをリビルド
100エラー19警告
ファイル->プロジェクト構造->ライブラリ->追加-> Java->前に作成したcore.jarを選択し、[OK]->ライブラリ 'core'が選択したモジュールに追加されます。 (Android)OK->そして、プロジェクト構造ダイアログでOK。
ビルド->プロジェクトのリビルド
15エラー20警告
すべてのエラーはエラーです:定数式が必要です AndroidのZXingプロジェクトのSwitchケースのエラー if elseのすべてのスイッチを変更します。
0エラー20警告
OK、今すぐ続けます:
ファイル->新しいプロジェクト-> zxing_demo次->次->空白のアクティビティ次->完了
新しいプロジェクト->ファイル->モジュールのインポート->検索して/ Android/OKを選択->既存のソースからモジュールを作成次->次->次->次->完了
これで、Explorer/Android// zging_demoProject /および外部ライブラリで確認できます
今、コードを変更しますtu scan QR
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.zxing_demo"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="7"
Android:targetSdkVersion="16" />
<uses-permission Android:name="Android.permission.CAMERA"/>
<uses-feature Android:name="Android.hardware.camera" />
<uses-feature
Android:name="Android.hardware.camera.autofocus"
Android:required="false" />
<uses-feature
Android:name="Android.hardware.touchscreen"
Android:required="false" />
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.example.zxing_demo.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:clearTaskOnLaunch="true"
Android:stateNotNeeded="true"
Android:configChanges="orientation|keyboardHidden"
Android:name="com.google.zxing.client.Android.CaptureActivity"
Android:screenOrientation="landscape"
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>
</application>
MainActivity.Java
package com.example.zxing_demo;
import Android.app.Activity;
import Android.content.Intent;
import Android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
}
テスト、実行->デバッグ
そしてクラッシュ。
Logcat
08-31 02:58:28.085 20665-20665/com.example.zxing_demo E/AndroidRuntime: FATAL EXCEPTION: main
Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.zxing_demo/com.google.zxing.client.Android.CaptureActivity}: Java.lang.ClassNotFoundException: com.google.zxing.client.Android.CaptureActivity
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1891)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1992)
at Android.app.ActivityThread.access$600(ActivityThread.Java:127)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1158)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:137)
at Android.app.ActivityThread.main(ActivityThread.Java:4448)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:823)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:590)
at dalvik.system.NativeStart.main(Native Method)
Caused by: Java.lang.ClassNotFoundException: com.google.zxing.client.Android.CaptureActivity
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:61)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:501)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:461)
at Android.app.Instrumentation.newActivity(Instrumentation.Java:1023)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1882)
... 11 more
この行のAndroidManifest.xmlで見ることができます
Android:name="com.google.zxing.client.Android.CaptureActivity"
赤の「CaptureActivity」とエラーメッセージ:シンボル「CaptureActivity」を解決できません
ファイル->プロジェクト構造->モジュール-> zxing_demo->依存関係->追加->モジュール依存関係-> Android OK->適用してOK
今CaptureActivityはよさそうだ
再度デバッグする
08-31 03:06:58.513 21740-21740/com.example.zxing_demo E/AndroidRuntime: FATAL EXCEPTION: main
Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.zxing_demo/com.google.zxing.client.Android.CaptureActivity}: Java.lang.ClassNotFoundException: com.google.zxing.client.Android.CaptureActivity
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1891)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1992)
at Android.app.ActivityThread.access$600(ActivityThread.Java:127)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1158)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:137)
at Android.app.ActivityThread.main(ActivityThread.Java:4448)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:823)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:590)
at dalvik.system.NativeStart.main(Native Method)
Caused by: Java.lang.ClassNotFoundException: com.google.zxing.client.Android.CaptureActivity
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:61)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:501)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:461)
at Android.app.Instrumentation.newActivity(Instrumentation.Java:1023)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1882)
... 11 more
私はアプリケーションとインテントを使用すると思いますが、今は誰かが私に教えてくれたら、この仕事をしたいと思っています。
私はZXINGをAndroidアプリケーションに統合していましたが、入力用の良いソースはありませんでした。何がうまくいったかについてのヒントを示します-簡単。
zxing
AndroidライブラリプロジェクトをAARアーカイブとして提供する、本当に便利なgitリポジトリがあります。
これをbuild.gradleに追加するだけです
repositories {
jcenter()
}
dependencies {
implementation 'com.journeyapps:zxing-Android-embedded:3.0.2@aar'
implementation 'com.google.zxing:core:3.2.0'
}
gradleはコードをコンパイルするためのすべての魔法を実行し、アプリでアクセスできるようにします。
スキャナーを後で起動するには、このクラス/メソッドを使用します:アクティビティから:
new IntentIntegrator(this).initiateScan(); // `this` is the current Activity
フラグメントから:
IntentIntegrator.forFragment(this).initiateScan(); // `this` is the current Fragment
// If you're using the support library, use IntentIntegrator.forSupportFragment(this) instead.
いくつかのカスタマイズオプションがあります。
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
integrator.setPrompt("Scan a barcode");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setBeepEnabled(false);
integrator.setBarcodeImageEnabled(true);
integrator.initiateScan();
これらにはsample-projectがあり、いくつかの統合例を提供しています。
既にリンクにアクセスしている場合は、git READMEからコードをコピーして貼り付けただけです。そうでない場合は、そこからさらに洞察とコード例を入手してください。
buttion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new com.google.zxing.integration.Android.IntentIntegrator(Fragment.this).initiateScan();
}
});
public void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d("MainActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("MainActivity", "Scanned");
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
}
} else {
// This is important, otherwise the result will not be passed to the fragment
super.onActivityResult(requestCode, resultCode, data);
}
}
dependencies {
compile 'com.journeyapps:zxing-Android-embedded:3.2.0@aar'
compile 'com.google.zxing:core:3.2.1'
compile 'com.Android.support:appcompat-v7:23.1.0'
}
同じ問題に直面している人は誰でも、簡単な手順に従ってください。
オプションImport project (Eclipse ADT, Gradle, etc.)
を使用して、ダウンロードしたzxing-master
ZipファイルからプロジェクトAndroid
をインポートし、アプリレベルbuild.gradle
ファイルにドローイング2行のコードを追加すると、実行準備が整います。
とても簡単です.
dependencies {
// https://mvnrepository.com/artifact/com.google.zxing/core
compile group: 'com.google.zxing', name: 'core', version: '3.2.1'
// https://mvnrepository.com/artifact/com.google.zxing/Android-core
compile group: 'com.google.zxing', name: 'Android-core', version: '3.2.0'
}
以下のリンクから、常に最新バージョンのcore
およびAndroid core
を見つけることができます。
https://mvnrepository.com/artifact/com.google.zxing/core/3.2.1https://mvnrepository.com/artifact/com.google.zxing/Android- core/3.2.
更新(2019年5月29日)
代わりにこれらの依存関係を追加します。
dependencies {
implementation 'com.google.zxing:core:3.4.0'
implementation 'com.google.zxing:Android-core:3.3.0'
}