将zxing-2.0实现到我的Android应用程序中

时间:2012-10-15 10:09:22

标签: android zxing

所以我试图将它实现到我的应用程序中,但问题是它不能作为一个独奏应用程序,所以它粉碎evrytime我启动它。我按照后面的教程http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/进行了改进,然而,它在某种程度上不起作用。所以我试图将captureActivity作为应用程序而不是库启动,并且在尝试执行此操作时它会在启动时崩溃:

 private static final Set<ResultMetadataType> DISPLAYABLE_METADATA_TYPES =
  EnumSet.of(ResultMetadataType.ISSUE_NUMBER,
             ResultMetadataType.SUGGESTED_PRICE,
             ResultMetadataType.ERROR_CORRECTION_LEVEL,
             ResultMetadataType.POSSIBLE_COUNTRY);

这导致了我没有正确编译core.jar的问题。但是我看不出我会在哪里犯错误。我在核心目录中运行ant -f,它给了我core.jar。任何想法我能做什么?

编辑:logcat:

 01-06 02:07:08.280: E/AndroidRuntime(1629): FATAL EXCEPTION: main
 01-06 02:07:08.280: E/AndroidRuntime(1629): java.lang.ExceptionInInitializerError
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at java.lang.Class.newInstanceImpl(Native Method)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at java.lang.Class.newInstance(Class.java:1409)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at android.os.Handler.dispatchMessage(Handler.java:99)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at android.os.Looper.loop(Looper.java:130)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at android.app.ActivityThread.main(ActivityThread.java:3683)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at java.lang.reflect.Method.invokeNative(Native Method)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at java.lang.reflect.Method.invoke(Method.java:507)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at dalvik.system.NativeStart.main(Native Method)
 01-06 02:07:08.280: E/AndroidRuntime(1629): Caused by: java.lang.NoClassDefFoundError: com.google.zxing.ResultMetadataType
 01-06 02:07:08.280: E/AndroidRuntime(1629):    at com.google.zxing.client.android.CaptureActivity.<clinit>(CaptureActivity.java:107)
 01-06 02:07:08.280: E/AndroidRuntime(1629):    ... 15 more
 01-06 02:07:08.740: E/GoKeyboard(1442): error setSuggestions isNotInput()!
 01-06 02:07:09.140: E/GoKeyboard(1442): error setSuggestions isNotInput()!
 01-06 02:07:11.600: E/GoKeyboard(1442): error setSuggestions isNotInput()!
 01-06 02:07:11.600: E/GoKeyboard(1442): error setSuggestions isNotInput()!

现在我从这里下载核心http://mvnrepository.com/artifact/com.google.zxing/core/2.0并使用它并窃取同样的错误,所以它必须是别的......

2 个答案:

答案 0 :(得分:4)

转到属性 - &gt; Java构建路径 - &gt; &#34;订购和出口&#34;

然后将core.jar命令到第一个位置并选择它!

您必须在操作后清理项目。项目 - &gt;清洁

解决了这个问题。我希望它节省了一些人的时间。

答案 1 :(得分:0)

ADT的最后一个版本的主要问题是资源常量不能在switch-case语句中使用。解决方案是按照此URL中的说明操作: http://tools.android.com/tips/non-constant-fields 在switch-case语句中指示错误并将它们转换为if-else。 这种方式对我有用zxing2.1。