0

数週間、私は ZXING ライブラリを使用して、テキストを含む単純な QR コードを生成して表示するアプリを作成しようと試みてきました。このトピックに関する他のほぼすべての質問を読みましたが、うまくいきません。

私は近いと思います。現時点では、プロジェクトの参照として core.jar が含まれており、zxing フォルダーの Android ライブラリも参照ライブラリとして持っています。

これが私のコードです:

String uniqueID="hi";
    BarcodeFormat barcodeFormat = BarcodeFormat.QR_CODE;
    int width0 = 500;
    int height0 = 500;
    QRCodeWriter writer = new QRCodeWriter();
    try
    {
        EnumMap<EncodeHintType, Object> hint = new EnumMap<EncodeHintType, Object>(EncodeHintType.class);
        hint.put(EncodeHintType.CHARACTER_SET, "UTF-8");
        BitMatrix bitMatrix = writer.encode(uniqueID, barcodeFormat, width0, height0, hint);
        int width = bitMatrix.getWidth();
        int height = bitMatrix.getHeight();
        int[] pixels = new int[width * height];
        for (int y = 0; y < height; y++)
        {
            int offset = y * width;
            for (int x = 0; x < width; x++)
            {

                pixels[offset + x] = bitMatrix.get(x, y) ? android.graphics.Color.BLACK : android.graphics.Color.WHITE;
            }
        }

        Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
        ImageView imageview = (ImageView)findViewById(R.id.qrCode);
        imageview.setImageBitmap(bitmap);
    } catch (WriterException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

このコードにはエラーはありません。アプリを実行し、このコードを実行するボタンをクリックすると、次の logcat 出力が得られます。

06-19 15:33:34.493: W/dalvikvm(1340): VFY: unable to resolve static field 1076 (QR_CODE) in Lcom/google/zxing/BarcodeFormat;
06-19 15:33:34.493: D/dalvikvm(1340): VFY: replacing opcode 0x62 at 0x0002
06-19 15:33:34.493: D/dalvikvm(1340): DexOpt: unable to opt direct call 0x114f at 0x0a in Lcom/example/qrgen/MainActivity;.genQR
06-19 15:33:34.493: I/dalvikvm(1340): DexOpt: unable to optimize static field ref 0x043c at 0x14 in Lcom/example/qrgen/MainActivity;.genQR
06-19 15:33:34.963: D/libEGL(1340): loaded /system/lib/egl/libEGL_mali.so
06-19 15:33:34.993: D/libEGL(1340): loaded /system/lib/egl/libGLESv1_CM_mali.so
06-19 15:33:34.998: D/libEGL(1340): loaded /system/lib/egl/libGLESv2_mali.so
06-19 15:33:35.003: D/(1340): Device driver API match
06-19 15:33:35.003: D/(1340): Device driver API version: 10
06-19 15:33:35.003: D/(1340): User space API version: 10 
06-19 15:33:35.003: D/(1340): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST 2012 
06-19 15:33:35.073: D/OpenGLRenderer(1340): Enabling debug mode 0
06-19 15:33:38.883: D/AndroidRuntime(1340): Shutting down VM
06-19 15:33:38.883: W/dalvikvm(1340): threadid=1: thread exiting with uncaught exception (group=0x420312a0)
06-19 15:33:38.913: E/AndroidRuntime(1340): FATAL EXCEPTION: main
06-19 15:33:38.913: E/AndroidRuntime(1340): java.lang.IllegalStateException: Could not execute method of the activity
06-19 15:33:38.913: E/AndroidRuntime(1340):     at android.view.View$1.onClick(View.java:3691)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at android.view.View.performClick(View.java:4211)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at android.view.View$PerformClick.run(View.java:17267)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at android.os.Handler.handleCallback(Handler.java:615)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at android.os.Looper.loop(Looper.java:137)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at android.app.ActivityThread.main(ActivityThread.java:4898)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at java.lang.reflect.Method.invokeNative(Native Method)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at java.lang.reflect.Method.invoke(Method.java:511)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at dalvik.system.NativeStart.main(Native Method)
06-19 15:33:38.913: E/AndroidRuntime(1340): Caused by: java.lang.reflect.InvocationTargetException
06-19 15:33:38.913: E/AndroidRuntime(1340):     at java.lang.reflect.Method.invokeNative(Native Method)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at java.lang.reflect.Method.invoke(Method.java:511)
06-19 15:33:38.913: E/AndroidRuntime(1340):     at android.view.View$1.onClick(View.java:3686)
06-19 15:33:38.913: E/AndroidRuntime(1340):     ... 11 more
06-19 15:33:38.913: E/AndroidRuntime(1340): Caused by: java.lang.NoClassDefFoundError: com.google.zxing.BarcodeFormat
06-19 15:33:38.913: E/AndroidRuntime(1340):     at com.example.qrgen.MainActivity.genQR(MainActivity.java:36)
06-19 15:33:38.913: E/AndroidRuntime(1340):     ... 14 more

問題は com.google.zxing.BarcodeFormat にあるようですが、参照ライブラリを確認したところ、そのクラスは存在します。何が間違っている可能性がありますか?

4

1 に答える 1

2

最近、ADT のバージョンを更新しましたか? 最新バージョン (ADT 22) では、依存関係 (あなたの場合は ZXing など) がクラッシュするNoClassDefFoundErrorため、この場合、コードとはまったく関係ありません。

最も一般的な解決策はすでに stackoverflowにあります。うまくいくかどうかを確認してください!

于 2013-06-19T14:42:16.077 に答える