2

そこで、QRコードをスキャンできるアプリを開発しています。ZXing ライブラリをダウンロードし、apache ant を使用してビルドして core.jar を取得し、それをプロジェクト フォルダーに配置して、ビルド パスに jar として追加しました。いいえ、次のことをしようとすると:

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
startActivityForResult(intent, 0);

次のエラーが表示されます。

08-14 18:52:01.191: E/AndroidRuntime(617): FATAL EXCEPTION: main
08-14 18:52:01.191: E/AndroidRuntime(617): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.android.Wowser/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity in loader dalvik.system.PathClassLoader[/data/app/com.android.Wowser-1.apk]
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.os.Looper.loop(Looper.java:123)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.main(ActivityThread.java:3683)
08-14 18:52:01.191: E/AndroidRuntime(617):  at java.lang.reflect.Method.invokeNative(Native Method)
08-14 18:52:01.191: E/AndroidRuntime(617):  at java.lang.reflect.Method.invoke(Method.java:507)
08-14 18:52:01.191: E/AndroidRuntime(617):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-14 18:52:01.191: E/AndroidRuntime(617):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-14 18:52:01.191: E/AndroidRuntime(617):  at dalvik.system.NativeStart.main(Native Method)
08-14 18:52:01.191: E/AndroidRuntime(617): Caused by: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity in loader dalvik.system.PathClassLoader[/data/app/com.android.Wowser-1.apk]
08-14 18:52:01.191: E/AndroidRuntime(617):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
08-14 18:52:01.191: E/AndroidRuntime(617):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
08-14 18:52:01.191: E/AndroidRuntime(617):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
08-14 18:52:01.191: E/AndroidRuntime(617):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
08-14 18:52:01.191: E/AndroidRuntime(617):  ... 11 more

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk android:minSdkVersion="10" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA"/>

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name="com.android.Wowser.DealsActivity"
        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:name="com.google.zxing.client.android.CaptureActivity"
        android:configChanges="orientation|keyboardHidden"
        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>
    <activity android:name=".Register" />
    <activity android:name=".SignIn" />
    <activity android:name=".Options" />
    <activity android:name=".Scan" />
</application>

Zxing を適切に使用するための設定方法や、どこが間違っているのか教えてもらえますか? どんな助けでも大歓迎です。

4

2 に答える 2

1

このエラーが発生する理由は 3 つだけです。

  1. クラスは本当に存在しません。公式の例のコードを使用してこれを取得している場合は、ライブラリの最新のビルドがあることを確認してください。
  2. jar をビルド パスに追加していません。これを修正するには、Eclipse で jar を右クリックし、[ビルド パス] ► [ビルド パスに追加] を実行します。
  3. jar が /libs フォルダーにありません。これは、ビルド パスに jar を追加したときに発生しますが、新しいバージョンの ADT では /libs にある必要があります。そこに置き、ビルドパスに再度追加します。
于 2012-08-14T19:10:08.110 に答える
1

Zxing Barcode Scanner アプリケーションがインストールされていますか? インテントを使用してスキャンするには、アプリケーションをインストールする必要があります。

CaptureActivity は core.jar ライブラリにありません。独自のアプリケーションにインストールして統合したくない場合は、Android プロジェクトをライブラリとして含める必要があります。それはたくさんの混乱です。アプリケーションをインストールすることをお勧めします。

別の方法は、Zbarライブラリを使用することです。このライブラリは使いやすく、アプリケーションをインストールする必要はありません。唯一の問題は、それが目的のバーコードをサポートしているかどうかです。確認することをお勧めします。

編集:

このリンクを使用して zxing をネイティブに含めようとしたことがあります。

Android プロジェクトに ZXing バーコード スキャンをネイティブに追加する

ZXing QR リーダーの直接統合

これを確認できます。

于 2012-08-14T19:18:28.553 に答える