2013-07-01 44 views
0

我的目标:生成PDF417格式的2D条形码并将其显示在我的应用程序的ImageView中。

我使用ZXing2.1库的core.jar和j2se.jar。
Android:创建条形码图像并在图像中显示查看

以下代码尝试创建条码并将其显示在imageView中。

ImageView imageView = (ImageView) findViewById(R.id.imageView); 
    try { 

     Writer writer; 
     BitMatrix bitMatrix = null; 
     writer = new PDF417Writer(); 
     bitMatrix = writer.encode("123456789", BarcodeFormat.PDF_417, 580, 150); 

     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
     MatrixToImageWriter.writeToStream(bitMatrix, "png", byteArrayOutputStream); 
     InputStream decodedInput=new ByteArrayInputStream(((ByteArrayOutputStream) byteArrayOutputStream).toByteArray()); 
     Drawable d = BitmapDrawable.createFromStream(decodedInput, "src"); 
     imageView.setImageDrawable(d); 
     System.out.println("PDF417 Code Generated."); 
    } catch (Exception e) { 

    } 

当我执行的代码,我得到这个错误:

07-01 08:42:13.148: ERROR/dalvikvm(1508): Could not find class 'java.awt.image.BufferedImage', referenced from method com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage 
07-01 08:42:13.178: ERROR/AndroidRuntime(1508): FATAL EXCEPTION: main 
    java.lang.NoClassDefFoundError: java.awt.image.BufferedImage 
    at com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(MatrixToImageWriter.java:54) 
    at com.google.zxing.client.j2se.MatrixToImageWriter.writeToStream(MatrixToImageWriter.java:99) 
    at com.google.zxing.client.j2se.MatrixToImageWriter.writeToStream(MatrixToImageWriter.java:91) 
    at com.example.untitled.MyActivity.onCreate(MyActivity.java:35) 
    at android.app.Activity.performCreate(Activity.java:5104) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
    at android.app.ActivityThread.access$600(ActivityThread.java:141) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5039) 
    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:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    at dalvik.system.NativeStart.main(Native Method) 

的原因似乎是显而易见的。但是现在我不知道如何将图像数据写入bitMatrix的流中。

请提出解决方案。如果有的话,我会欣赏指针。

注:我已经经历了很多堆栈溢出解决方案和网络上的。他们中的大多数都是围绕ZXing整合,并不能满足我的具体问题。重定向到适当的解决方案,以防引起我的注意。

另外我想知道一个处理这个问题的优雅方式。

回答

2

The whole java.awt.* framework isn't part of the Android SDK, including BufferedImage, and hence not supported by the emulator or physical devices. Android has its own implementation for loading and rendering graphics.

Referance here

至于解决问题refer here ..它使用Bitmap类创建条码..

希望这有助于...

+0

感谢您的参考帮助。我确实找到了解决方案。我想了解使用提示和编码类型。它提供了什么价值?跳过那部分可以吗? –